2010-02-03 7 views
3

관련 값이있는 열거 목록을 저장하는 파일이 있습니다.열거 형의 양방향 검색을위한 사용자 인터페이스 디자인

Enumerated value  Meaning (associated text) 
0      Sunday 
1      Monday 
2      Tuesday 
3      Wednesday 
4      Thursday 
5      Friday 
6      Saturday 

나는 사용자가 열거 값 및 관련 텍스트 사이에 볼 수 있도록하는 C# 프로그램을 쓰고 있어요 : 다음은 파일 (보다는 실제 내용)의 모습 그림입니다. 즉, 값에서 텍스트를 찾을 수 있어야하며, 그 반대도 마찬가지입니다.

사용자 인터페이스를 디자인하는 가장 좋은 방법은 무엇일까? 몇 가지 아이디어가 있습니다.

  1. 두 개의 텍스트 상자가 있습니다. 사용자는 둘 중 하나를 입력 할 수 있고 다른 하나는 사용자가 입력 할 때 자동으로 채 웁니다. 값이 유효하지 않으면 다른 텍스트 상자를 비워 두십시오.
  2. 사용자가 가지고있는 정보의 측면에 입력 할 텍스트 상자, 텍스트 상자에 채울 정보를 지정하는 라디오 단추, 누른 때 확인 단추 등으로 텍스트 레이블을 결과 또는 오류 메시지.
  3. 2와 같지만 확인 버튼이 없습니다. 사용자 유형 (즉, Control.KeyPress 이벤트 처리)으로 텍스트 레이블을 업데이트하면됩니다.
  4. 두 개의 개별 화면 (텍스트에서 열거를 검색하려면 하나, 열거에서 텍스트를 검색하려면 다른 하나)을 사용하고 사용자는 탭이나 단추로 화면을 넘길 수 있습니다. 결과 또는 오류 메시지를 표시하려면 사용자 입력 용 텍스트 상자, 확인 버튼 및 텍스트 레이블이 있어야합니다.
  5. 같은 화면에 두 개의 영역이 있습니다. 각 영역의 형식은 4와 동일합니다.

제가 느낀 점은 다소 느릴 수도 있지만 사용자가 방금 입력 한 경우 표시 할 내용이 있지만 GUI 응용 프로그램에서 2 가지를 기대한다고 생각했습니다. "S"를 누르고 확인을 누릅니다. 옵션 1은 복잡하지만 대화 형 일 수 있습니다 (답변이 더 빨리 표시됨).

죄송합니다. 프로그래밍상의 질문이 아니지만 자주 UI 디자인 문제라고 생각합니다. 산업 표준 모범 사례를 알려주는 사람이 있습니까?

대단히 감사합니다.

답변

2

목록에 몇 개의 항목이 있습니까? 그것이 합리적으로 작은 숫자 인 경우 < 100이면 Tufte 방식을 사용하고 두 개의 잘 설계된 테이블을 나란히 표시합니다 (하나는 값으로 정렬되고 다른 하나는 의미로 정렬 됨). 눈/두뇌 연결은 우리가 깨닫는 것보다 훨씬 빨리 데이터를 파싱 할 수 있습니다. 나는 Tufte가 각 눈이 ~ 10Mbit/sec까지 가능하다고 주장한다.

다양한 유형의 데이터가 많이있는 경우 # 1이 최선의 방법이라고 생각합니다. 가장 적은 수의 양식 컨트롤. AJAX 또는 인라인 배열을 통해 데이터를 신속하게 검색 할 수 있습니다. 수업 내용이 분명하고 간결하게 작성되었는지 확인하십시오.

유일한 접근법은 사용자가 관련 데이터 세트를보고 스스로 패턴을 설정하지 못하게하는 것입니다. 예를 들어, 0 = 일요일, 1 = 월요일이라고 말하면 2 = 화요일이라는 합리적인 가정을 할 수 있습니다. 사용자가 패턴을 이해하면 각 개별 값에 대해 양식을 사용하는 대신 오히려 패턴을 사용하게됩니다.

+0

답장을 보내 주셔서 감사합니다. 나는 열거 된 각 필드에 대해 500 개를 초과하는 항목으로 약 200 개의 열거 형 필드에 대해 이야기하고 있습니다. 열거 된 목록의 항목은 논리적으로 구성되지 않습니다. 이 예는 설명을위한 것입니다! – Andy

+0

그런 다음 적어도 100 가지 가능성을 가진 필드에 대해 Mark의 두 번째 단락 (및 # 1)을 원하는 것처럼 들립니다. 특히 200 쌍이 주어 졌을 때 특히 그렇습니다. 부동산은 심각한 문제이며, 가능한 한 적은 수의 컨트롤을 원할 것입니다. 유효하지 않은 입력 (예 : 텍스트 상자 아래의 텍스트 "일치하지 않음")에 대한 피드백 (빈 상자가 아닌)을 제공한다고 추가하겠습니다. 작은 버튼을 사용하여 사용자가 값을 알지 못할 때 값을 검색 할 창이나 페이지를 열 수 있습니다 (사용자가 일반적으로하는 것으로 가정합니다). –

0

은 당신이 열거 방금 헬퍼 방법 중 몇 가지를 사용 할 수 없습니다이

public enum Days { Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6 }; 

같은 것을 설정 한 가정하면?

public static int GetEnumValue(string name, Type enumType) 
    { 
     int result = -1; 

     foreach (var item in Enum.GetValues(enumType)) 
     { 
      if (item.ToString() == name) 
      { 
       result = (int) item; 
       break; 
      } 

     } 

     return result; 
    } 

    public static string GetEnumValue(int value, Type enumType) 
    { 
     string result = null; 

     foreach (var item in Enum.GetValues(enumType)) 
     { 
      if ((int)item == value) 
      { 
       result = item.ToString(); 
       break; 
      } 
     } 

     return result; 
    } 

또는 나는 그 질문을 오해 했습니까?

+0

질문에 오해 한 것 같습니다. 나는 정말로 사용자 인터페이스를 디자인하는 방법에 대한 제안과 조언을 요구했다. 예제 파일은 설명을위한 것입니다. 실제 파일은 우리가 필요로하지 않는 많은 정보가있는 XML 파일입니다. 이 경우에는 디자인이 코드 앞에 있어야합니다. – Andy

1

귀하의 변종이 너무 복잡하다고 생각합니다. 열거 형을 검색 할 필요가 없다면 최상의 키보드 기반 인터페이스는 자동 완성 기능이있는 텍스트 필드 하나와 그 옆에 레이블을 표시하여 결과를 표시하는 것입니다.

사용자가 입력 할 때 프로그램은 양쪽 값과 텍스트를 검색하고 부분 일치를 제안으로 표시합니다. 일치하는 항목 (전체 또는 부분 일 수도 있음)이 있으면 즉시 해당 항목이 표시됩니다. 따라서 match가 값과 일치하면 해당 텍스트가 표시되고 반대의 경우도 마찬가지입니다.

또는 더 간단하게 사용자 유형별로 일치하는 값 - 텍스트 쌍 목록을 표시하고 각 입력 된 문자로 점진적으로 업데이트됩니다. Enter를 누르지 않아도됩니다.

+1

+1 나는이 답변을 좋아합니다 (값과 텍스트를 구별하기 어려운 경우 제외). 부분 일치 '제안'과 전체 일치를 구별 할 필요가 없을 수도 있습니다. 단 하나의 모호하지 않은 일치가있을 때까지 부분 일치하는 쌍을 여러 개 표시 할 수 있습니다. –

+0

귀하의 의견에 동의하며 첫 번째 창 디자인에 제안 사항을 적용했습니다. – Andy

1

1 번과 같은 솔루션을 사용했습니다. 상자를 항상 동기화 상태로 유지하는 것이 중요하거나 사용자가 오래된 값을 유효한 번역으로 잘못 읽는 것이 중요합니다. 필자는 사용자가 타이핑 (또는 붙여 넣기)을 시작하자마자 다른 상자를 지웠다.

또한 사용 유형에 따라 달라집니다. 사용자가 자주 사용하는 것이기 때문에 키 스트로크를 최소화하거나 특정 사용자가 거의 걸리지 않을 경우 약간의 학습 곡선을 허용 할 수 있습니까?

0

답장을 보내 주셔서 감사합니다. 모든 입력을 고려한 후에 인터페이스에 대한 제안을 제안했습니다.

  • 프로그램 시작시 모든 열거 형 필드와 해당 필드 번호의 목록과 열거 형 값이로드됩니다.
  • 초기 인터페이스는 TextBox와 ListBox로 구성됩니다. 처음에는 ListBox에 열거 된 모든 필드가 표시됩니다. TextBox에서 사용자가 입력 할 때 일치하지 않는 항목 (필드 이름 또는 필드 번호)은 ListBox에서 제거됩니다.
  • ListBox에서 항목 (즉, 열거 형 필드)을 두 번 클릭하거나 선택하고 Enter 키를 누르면 새 창이 표시됩니다.
  • 두 개의 열이있는 테이블에서 열거 된 모든 값과 관련 텍스트 (첫 번째 창에서 선택한 열거 형 필드의 경우)가 새 창에 표시됩니다.
  • 목록은 열을 클릭하여 정렬 할 수 있습니다. 또한 사용자는 Ctrl-F를 사용하여 목록을 검색 할 수 있어야합니다 (잘하면 C# 응용 프로그램에서 허용됨).

인터페이스를 단순화하고 (텍스트 상자와 목록 상자 1 개만) 사용하기 쉽도록 초기 창을 선택했습니다. 또한 열거 된 값을 함께 표시하고 사용자가 정보를 가지고 놀 수 있도록하는 것이 정교한 인터페이스 뒤에 숨어있는 모든 것을 숨기는 것보다 훨씬 우수하다고 생각합니다.

인터페이스 디자인에 대한 귀하의 의견은 많은 도움이 될 것입니다.

PS 현재 사용자는 웹 사이트로 이동하여 XML 문서의 최신 버전을 찾고 다운로드 한 다음 XML을 검색하여 찾고있는 필드를 찾고 필요한 값을 찾아야합니다 . 내 응용 프로그램은 그것들을 대단히 단순하게해야합니다.

관련 문제