2011-08-07 4 views
0

콤보 상자 (comboBoxMain) 및 여러 다른 컨트롤이 포함 된 WinForms 앱이 있습니다. comboBoxMain은 5 개의 객체 (여러 속성을 포함하는 데이터 클래스의 인스턴스)의 배열에 바인딩되며 012 객체는이 다른 UI 컨트롤에 표시되는 을 선택하는 데 사용됩니다. 사용자가 양식의 모든 컨트롤에서 원하는 값을 선택하면 해당 값을 데이터 클래스의 다른 4 개의 인스턴스 각각에 복사하는 버튼이 있습니다. 내 양식의 일부 컨트롤은 가시성, 활성화/비활성화 상태 또는 다른 컨트롤의 선택된 값에 영향을 미칠 수 있습니다. 예를 들어, 사용자가 combobox 중 하나에서 "Disabled"값을 선택하면 (comboBoxStatus라고 함), 다른 3 개의 컨트롤이 비활성화되고 체크 박스가 선택되고 그룹 박스의 제목이 변경됩니다. 사용자가 수정 한 후 그 SelectionChangeCommitted() 이벤트 핸들러에 코드를 트리거 comboBoxStatus에서 "사용 안 함"의 값을 (선택데이터 바인딩 및 수정 UI 컨트롤에 대한 WinForms 디자인 질문

  1. :이 기능을 보내고있어 문제는 다음 시나리오에 의해 설명 될 수 있습니다 위에서 설명한대로 다른 컨트롤).

  2. 다음으로 사용자는 단추를 클릭하여 모든 컨트롤에서 현재 선택된 값을 다른 4 개의 데이터 개체로 복사합니다.

  3. 마지막으로 사용자는 comboBoxMain에서 다른 4 개의 데이터 개체 중 하나를 선택합니다. 이 경우

, 나는 화재가 comboBoxStatus의 SelectedValue에 보이는 것을 comboBoxMain에 대한 SelectionChangeCommitted() 이벤트 핸들러를 가지고있다. 불행히도 이전에 속성에 복사 한 "사용 안 함"값 대신 기본 속성의 기본값을 확인합니다. comboBoxMain_SelectionChangeCommitted()의 끝에는 UI의 다른 요소에 영향을 줄 수있는 컨트롤의 값을 확인하고 모든 것이 적절히 업데이트되는지 확인해야하는 코드가 있습니다. 이것은 분명히 올바른 값을 보지 못하기 때문에 발생하지 않습니다. 해당 코드를 이벤트 처리기 밖으로 이동하고 UI가 현재 선택된 데이터 객체의 데이터를 바인딩 한 후에 버튼을 눌러 수동으로 호출하면 작동합니다. comboBoxMain_SelectionChangeCommitted()가 종료 될 때까지 바인딩이 업데이트되지 않기 때문에 이런 현상이 발생할 수 있습니다.

나는 모두 의미가 있기를 바랍니다. 저는이 문제를 몇 시간 동안 가지고 있었고 아직 어떤 일이 일어나고 있는지, 또는이 문제에 대한 최선의 해결책이 무엇인지 완전히 이해하지 못했습니다. 네가 어떤 생각을 가지고 있다면, 나는 그 말을 듣고 감사하게 생각한다. 읽어 주셔서 감사합니다!

+0

모든 관련 비트와 조각을 산문 텍스트에서 함께 얻는 것은 꽤 어렵습니다. 질문에 관련 코드를 추가하고 문제가 발생한 정확한 위치를 지적 해 주시겠습니까? – stakx

답변

0

SelectionChangeCommitted 이벤트 처리기의 코드를 SelectedIndexChanged 이벤트 처리기로 이동하여이 문제를 해결할 수있었습니다.

관련 문제