2008-11-14 2 views
5

이것은 약간 이상한 것입니다. 그러나 몇 시간 동안 고생하고 있었고 현재 무슨 일이 일어나고 있는지 이해할 수 없습니다.Dataabound에서 탭을 열 수 없습니다. Winforms 드롭 다운 목록

나는이 문제를 다른 사람이 경험했는지 궁금해서 설명해주었습니다. 간단한 Winforms 앱을 만들고 많은 내장 컨트롤을 사용하려고합니다.

기본적으로 사용자 컨트롤과 일부 데이터 캡처 필드가있는 양식이 있습니다. 필드 중 3 개는 드롭 다운 목록이고 사용자 정의 컨트롤에는 Product 클래스에 직접 바인드하는 bindingSource 컨트롤이 있습니다.

런타임에는 Product 클래스의 인스턴스를 BindingSource에 제공하고 클래스에는 ProductType의 속성이 있습니다. 간단히하기 위해 제품 클래스에 List<ProductType> ProductTypes를 추가하여 쿼리 할 때 자체로드됩니다. 즉, 동일한 bindingSource를 사용하고 ProductTypes 데이터 멤버를 드롭 다운 목록의 데이터 소스로 선택할 수 있습니다.

양식을 실행하면 목록이 완벽하게 바인딩되고 나열된 모든 제품 유형을 볼 수 있으며 하나를 선택하고 탭을 클릭하거나 다음 필드를 클릭 할 수 있습니다. 그러나 분명히 선택된 값은 바인드하지 않습니다. 왜냐하면 드롭 다운에 대해 SelectedValue라는 바인딩을 선택하지 않았기 때문에 데이터 소스 만 바인딩됩니다. Drop down이 Bindings-SelectedValue에 바인딩하여 Product의 인스턴스를 수정하고 폼을 실행하자마자 목록은 여전히 ​​완벽하게 채워지고 내가하지 않는 한 컨트롤을 통해 탭을 만들 수 있습니다. 드롭 다운에서 선택하십시오. 드롭 다운에서 선택하면 드롭 다운에 포커스가 있습니다. 나는 사랑이나 돈을 지불 할 수 없으며 양식의 취소 버튼을 클릭 할 수도 없습니다. 닫기 버튼 오른쪽 버튼은 클릭 할 수있는 유일한 버튼이며 다른 필드 나 드롭 다운을 클릭 할 수 없습니다. 이것은 선택이 이루어 지자 마자 세 번의 드롭 다운 모두에 영향을줍니다.

누구나 내가 누락 된 아이디어가 있습니까?

나는 몇 가지를 변경하려고 시도했지만 드롭 다운 값에 개체 멤버 대신 문자열 []을 입력하여 성공을 거두었습니다. 그건 작동하는 것,하지만 데이터 바인딩을 사용하는 개체를 패배하지 않는가?

도움을 주셨습니다.

답변

8

테스트를 설정하고 지금 바로 확인할 시간이 없기 때문에 여기에서 추측합니다. 그러나 유효성을 검사하고 있습니까? 내용이 유효성을 검사하지 않으면 데이터 바인딩 된 컨트롤을 사용하면 떠나지 않습니다. 명시 적으로하지 않더라도 CausesValidation을 False로 설정하여 배후에 어떤 유형의 유효성 검사가 있는지 알아보십시오. 힌트를 줄 수도 있습니다.

+0

많은 Tom에게 감사드립니다. 테스트 앱이므로 유효성 검사를 포함하지 않을 때 어떤 일이 발생하는지 보여줍니다. – RobertTheGrey

+0

그런 유효성 검사 오류를 잡을 수 있습니까? 그것은 심지어 무엇일까요? – Lamar

0

Infragisticst Dropdowns의 경우 (다른 winform 드롭 다운에는 적용되지 않음) : "LimitToList"가 true로 설정된 경우 드롭 다운에 멈추어 서 실현할 수 있습니다. ItemNotInList를 사용하여 경고 메시지를 트리거합니다.

1

이것에 대한 의견을 보내 주셔서 고맙습니다. 저의 머리를 감쌌습니다.

내 경우에는 ComboBox.Validating 이벤트에 대한 EventHadler 중 하나에서 예외가 발생하고있는 것으로 나타났습니다. IDE가 예외를 표시하지 않았기 때문에 추적하기가 어려웠습니다. 디버그 메뉴의 Exception 비헤이비어를 수정하고 던져진 InvalidOperationException을 표시 한 다음 추적 할 수있었습니다.

Tom이 제안한대로 CuasesValidation을 끄면이를 알아낼 수있는 티켓이었습니다.