2014-02-07 3 views
0

Можно ли захватить значение элемента списка перечислений? Я создал список перечислений, в котором каждый элемент привязан к байтовому значению.Запись значений списка переходов в последовательный порт

public enum Items : byte 
{ 
    Item1 = 0x00, 
    Item2 = 0x01, 
    Item3 = 0x02 .... 
} 

В моем списке есть эти элементы, и я ищу способ записать ассоциированное значение байта, если оно выбрано. Есть ли что-то похожее на пример ниже, который мог бы работать для такой задачи?

if(listbox.SelectedItem = Item1 .. 2 .. 3) 
{ 
    // Write byte value of Item1 .. 2 .. 3 via serial port 
} 
+0

Просто отбрасывать выбранный элемент 'byte':' port.Write ((байт) listbox.SelectedItem); '(обратите внимание, что это работает, если предметы в 'ListBox' перечислены члены перечисления). – Dennis

+0

Спасибо Dennis ... Я попытался использовать этот подход, но у меня возникла ошибка: «невозможно преобразовать из« байта »в« string ». Поэтому я попытался: port.Write (((byte) listbox.SelectedItem) .ToString()) но после этого я получил сообщение «Указанный приведение недействителен». – Nevets

+0

@Nevets Деннис имеет правильную идею, я разработал его в своем ответе. – gleng

ответ

1

Как @Dennis предложил, вам просто нужно бросить enum к byte. Затем вам нужно передать это в качестве byte[] к Write:

port.Write(new [] { (byte) listBox.SelectedItem }, 0, 1); 
+0

Спасибо, глэн. Я попытался использовать этот подход, но у меня возникла ошибка: «can not конвертировать из байта в строку. Итак, я попробовал: 'port.Write (((byte) listbox.SelectedItem) .ToString()), но потом я получил сообщение« Указанный приведение недействителен ». – Nevets

+0

@Nevets Отредактировано. Это должно сработать. – gleng

+0

Спасибо, againg gleng. Я могу скомпилировать и запустить код сейчас, но я все еще получаю ошибку «Указанный приведение недействителен». Связано ли это с моим списком перечислений или с тем, как я пытаюсь получить доступ к данным байта? – Nevets

Смежные вопросы