Доброе утро!
Немного проясню ситуацию.
Как верно заметил Алексей, StiListBoxControl это тот же ListBox из System.Windows.Forms.
Но здесь есть нюанс. С помощью свойства SelectedItem можно получить только выбранное значение, но не Id, т.к. Id нигде не хранится, а
хранятся только текстовые значения из списка.
Чтобы получить Id (k_fak.id) и Value (k_fak.shfac) вам необходимо воспользоваться компонентом LookUpBoxControl и его свойствами Items и Keys соответственно.
Однако, если это не приемлемо, и нужен именно ListBox, то можете воспользоваться примерно таким кодом для решения вашей задачи:
Код: Выделить всё
// создаём класс
private class SimpleClass
{
public SimpleClass(int id, string value)
{
this.id = id;
this.value = value;
}
public int id { get; set; }
public string value { get; set; }
}
// создаём список классов, инициализируем Random'ными значениями
private List<SimpleClass> simpleList = new List<SimpleClass>()
{
new SimpleClass(44, "Значение 1"),
new SimpleClass(23, "Значение 2"),
new SimpleClass(58, "Значение 3"),
new SimpleClass(62, "Значение 5"),
new SimpleClass(71, "Значение 6")
};
...
// далее, например на FormLoad заполняем ListBox значениями
private void Form1_Load(object sender, EventArgs e)
{
listBox1.BeginUpdate();
foreach (SimpleClass c in simpleList)
listBox1.Items.Add(c.value); // обратите внимание, что индексы начинаются с нуля
listBox1.EndUpdate();
}
...
// и для теста, воспользуемся событием SelectedIndexChanged (по клику на значение в ListBox'е)
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
ListBox lb = sender as ListBox; // получаем ссылку на экземпляр текущего объекта
int i = lb.SelectedIndex; // получаем выбранный индекс элемента
SimpleClass c = simpleList[i]; // получаем по индексу нашу структуру
// просто выводим информацию для проверки
string msg = string.Format("Индекс ListBox: {0}\r\nId: {1}\r\nValue: {2}", i, c.id, c.value);
MessageBox.Show(msg);
}