У меня есть два ComboBox в приложении WinForm, которые отображают COM-порты, обнаруженные в системе.Они оба связаны с одним массивом, содержащим строки для каждого COM-порта.Массив заполняется вызовом SerialPort.GetPortNames()
.Я создал новые BindingContexts для ComboBox, чтобы избежать проблемы с общим доступом к одному и тому же источнику данных, в результате чего изменения в одном влияют на другой.
Я пытаюсь выбрать ранее сохраненное значение путем поиска этого значения в ComboBox с помощьюFindStringExact()
.
Во время работы в отладчике я заметил, что индекс, возвращаемый FindStringExact()
, отличался от того, где находится эта строка в исходном массиве.
Например, (взято из непосредственного окна), вот DataSource
для ComboBox:
comboBoxController1ComPort.DataSource
{string[0x00000003]}
[0x00000000]: "COM3"
[0x00000001]: "COM10"
[0x00000002]: "COM12"
Я бы подумал, что поиск COM3 вернул бы индекс 0, индекс COM10 1 и индекс COM12 2. Однако,Я получаю разные значения:
comboBoxController1ComPort.FindStringExact("COM3")
0x00000002
comboBoxController1ComPort.FindStringExact("COM10")
0x00000000
comboBoxController1ComPort.FindStringExact("COM12")
0x00000001
comboBoxController1ComPort.FindStringExact("COM1")
0xffffffff
Я не могу понять, почему я получаю индексы, отличающиеся от FindStringExact()
от индексов, возвращаемых свойством DataSource
.Кто-нибудь может помочь?
Спасибо