콤보 상자와 관련된 흥미로운 데이터 바인딩 질문이 있습니다. 희망 누군가가 좋은 제안을했습니다.콤보 상자 데이터 바인딩 질문
나는 파일 선택기와 comboxbox를 포함하는 간단한 양식을 가지고 있습니다. 파일을 가져올 때마다 파일에서 List 객체로 문자열 목록을 읽고 comboBox.DataSource = listOfStrings를 설정합니다. 형태 Load 이벤트
, I는 comboBox.DataBindings.Add 세트 ("되어 selectedItem"인 myObject "PickedValue");목적은 분명하다 : 문자열 콤보 상자에서 선택 될 때마다, 나는 myObject.PickedValue에 문자열을 쓰고 싶어요.
그것은 전체적인 이야기입니다.
이제 파일을 선택하는 대신 양식을 실행하고, 먼저 콤보 상자를 확인합니다. 물론이 시점에서 comboBox.DataSource는 null이고 comboBox.SelectedItem도 null입니다. 그러나 comboBox의 데이터 바인딩은 이미 설정되어 있습니다 (설정은 양식로드 이벤트에 있기 때문에). 이제는 내 초점을 콤보 상자에서 다른 곳으로 옮길 수 없습니다.
나는 selectedItem가 null를 가지고, 내가 콤보 상자를 확인하려고 할 때 이유는, 생각합니다. 포커스를 다른 곳으로 이동하려고하면 콤보 상자의 데이터 바인딩이 트리거됩니다. 내부적으로 선택된 항목을 문자열로 변환하고 myObject.PickedValue를 해당 변환 된 문자열로 업데이트하려고합니다. null을 문자열로 변환 할 수 없으므로 데이터 바인딩 유효성 검사가 실패하고 유효성 검사 메커니즘으로 다른 곳으로 포커스를 이동하지 못하고이 순간 빨려 들어 파일을 선택하지 못합니다.
내 질문은 내 응용 프로그램 시나리오에서이 트랩을 방지하기 위해 정상적인 바인딩 설치 작업 흐름은 무엇입니까? 그런 데이터 바인딩을 설정하는 올바른 순서는 무엇입니까? 그래서 데이터 소스가 무언가에 채워지기 전에 콤보 박스를 검사 할 수 있습니까?
참고로, 필자는 combobox의 SelectedText 속성에 myObject.PickedValue를 바인딩하려고했습니다. SelectedText가 null이고 SelectedItem이 null 인 경우에도 SelectedText는 문자열이며 null이 아닌 것으로 나타났습니다. 그러나 흥미롭게도, 내가 콤보 박스에서 무언가를 선택했다 할지라도, 데이터 바인딩이 시작될 때 SelectedText는 여전히 빈 문자열이다. 여기 뭐가 잘못 됐니?
도움 주셔서 감사합니다.
해결 방법을 제공해 주셔서 감사합니다. 나는 그것이 준비 될 때까지 콤보 박스를 비활성화하는 것이 좋은 생각이라고 생각한다. 그리고 SelectedText 속성이 왜 작동하지 않는지에 대해 설명해 주셔서 감사합니다. 나는 그것을 답으로 생각할 것입니다. – Steve