Страница 1 из 1

Работа с ListBoxControl?

Добавлено: 21 май 2015, 08:10
RuslanKoh
Помогите, пожалуйста, разобраться!
У меня есть объект ListBoxControl1, его свойствам я присвоил
Выбранное значение: k_fak.id
Элементы: k_fak.shfac
Элементы отображаются в списке нормально. Но у меня возникла проблема, как мне получить id выбранного элемента и как получить текст выбранного элемента?

Набираю ListBoxControl1. и список возможных вариантов не отображается (интеллисенс не работает), гуглил тоже не нашел нужной информации, голова уже болит искать и экспериментировать, вот как мне узнать как называются эти методы для работы с элементами в StimulSoft? :roll:

Re: Работа с ListBoxControl?

Добавлено: 21 май 2015, 09:47
HighAley
Здравствуйте, Руслан.

По сути StiListBoxControl представляет собой обёртку нетовского контрола ListBox.
Вы можете задать коллекцию Items и потом прочитать выбранные значения с помощью SelectedItem.

Спасибо.

Re: Работа с ListBoxControl?

Добавлено: 21 май 2015, 11:04
Леонид
Доброе утро!

Немного проясню ситуацию.
Как верно заметил Алексей, 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);
    }

Re: Работа с ListBoxControl?

Добавлено: 21 май 2015, 11:16
RuslanKoh
Спасибо за помощь) В данной ситуации мне хватит и SelectedItem, но подскажите, пожалуйста, может есть какая-нибудь документация где описаны все свойства объектов форм?

Re: Работа с ListBoxControl?

Добавлено: 21 май 2015, 11:21
Леонид
Лично я пользуюсь MSDN, вот по ListBox'у https://msdn.microsoft.com/en-us/librar ... 10%29.aspx.

Так же, вся документация по Стимулу есть у них на сайте http://www.stimulsoft.com/ru/documentation.