2010-11-22 2 views
0

시스템에서 감지 된 COM 포트를 표시하는 WinForm 응용 프로그램에 두 개의 ComboBox가 있습니다. 둘 다 각 COM 포트에 대한 문자열을 포함하는 단일 배열에 바인딩됩니다. 배열은 SerialPort.GetPortNames()에 대한 호출로 채워집니다. ComboBoxes에 대한 새로운 BindingContext를 작성하여 동일한 데이터 소스를 공유하는 문제를 피하여 하나가 변경되면 다른 하나가 영향을받습니다.잘못된 인덱스를 반환하는 ComboBox의 FindStringExact

ComboBox에서이 값을 FindStringExact()으로 검색하여 이전에 저장된 값을 선택하려고합니다.

디버거에서 실행되는 동안 FindStringExact()이 반환하는 인덱스가 해당 문자열이 소스 배열에있는 인덱스와 다른 인덱스임을 확인했습니다.

(직접 실행 창에서 가져온) 예를 들어

, 여기에 선택 상자에 대한 DataSource입니다 :

comboBoxController1ComPort.DataSource 

{string[0x00000003]} 
    [0x00000000]: "COM3" 
    [0x00000001]: "COM10" 
    [0x00000002]: "COM12" 
내가 COM3을 검색 인덱스 0, COM10 지수 1 COM12 색인이 돌아왔다 것이라고 생각했을 것이다

.

comboBoxController1ComPort.FindStringExact("COM3") 
0x00000002 

comboBoxController1ComPort.FindStringExact("COM10") 
0x00000000 

comboBoxController1ComPort.FindStringExact("COM12") 
0x00000001 

comboBoxController1ComPort.FindStringExact("COM1") 
0xffffffff 

나는 DataSource 속성에서 반환 된 것과 FindStringExact()에서 다른 인덱스를 받고 있어요 왜 이해할 수 없다 : 그러나, 나는 다른 값을 얻는다. 누구든지 도와 줄 수 있습니까?

답변

1

이 항목 같은데

덕분에 ... sorted 있습니다

+0

브릴리언트 - 빠른 답변 감사합니다. ComboBox가 DataSource에 다른 순서를 표시하고 있음을 알지 못했고 이전에 Sorted 속성을 True로 설정했음을 알지 못했습니다. – Swampie

관련 문제