2010-11-22 11 views
0

Ich habe zwei ComboBoxes in einer WinForm-Anwendung, die COM-Anschlüsse anzeigen, die auf dem System erkannt werden. Sie sind beide an ein einzelnes Array gebunden, das Strings für jeden COM-Port enthält. Das Array wird durch einen Aufruf an SerialPort.GetPortNames() aufgefüllt. Ich habe neue BindingContexte für die ComboBoxen erstellt, um das Problem zu vermeiden, dass sie die gleiche Datenquelle teilen, was dazu führt, dass sich die Änderungen in der einen ändern.FindStringExact auf ComboBox gibt falschen Index zurück

Ich versuche einen zuvor gespeicherten Wert zu wählen, indem ich diesen Wert in der ComboBox mit FindStringExact() suche.

Während ich im Debugger lief, bemerkte ich, dass der Index, der von FindStringExact() zurückgegeben wurde, ein anderer Index war als der, wo diese Zeichenfolge im Quell-Array ist.

Zum Beispiel (aus dem Direkt-Fenster genommen), hier ist die DataSource für die Comboboxen:

comboBoxController1ComPort.DataSource 

{string[0x00000003]} 
    [0x00000000]: "COM3" 
    [0x00000001]: "COM10" 
    [0x00000002]: "COM12" 

ich, dass COM3 für die Suche hätte gedacht, würde 0, 2 COM10 zurückgekehrt Index Index 1 und COM12 Index . Allerdings erhalte ich unterschiedliche Werte:

comboBoxController1ComPort.FindStringExact("COM3") 
0x00000002 

comboBoxController1ComPort.FindStringExact("COM10") 
0x00000000 

comboBoxController1ComPort.FindStringExact("COM12") 
0x00000001 

comboBoxController1ComPort.FindStringExact("COM1") 
0xffffffff 

ich kann nicht verstehen, warum ich verschiedene Indizes von FindStringExact() die von der DataSource Eigenschaft zurückgegeben bekommen würde. Kann jemand helfen?

Dank

Antwort

1

wie die Einzelteile Looks sind sorted ...

+0

Brilliant - vielen Dank für die schnelle Antwort. Ich hatte nicht bemerkt, dass die ComboBox eine andere Reihenfolge als die DataSource zeigte, und hatte nicht einmal bemerkt, dass ich die Sorted-Eigenschaft zuvor auf True gesetzt hatte. – Swampie

Verwandte Themen