2016-07-19 2 views
1

Я добавил динамически список на панели в моей winform. Я хотел бы получить значение из выбранного элемента, но мне не удается это сделать. У меня есть довольно хорошая идея, почему, но я не понимаю, как это сделать правильно.Как получить значение из выбранного элемента ListBox, добавленного динамически

Вот мой код:

private void App1button_Click(object sender, EventArgs e) 
     { 
      ListBox ListBoxapp = new ListBox(); 
      PanelLB.Controls.Add(ListBoxapp); 
       string[] item = GetDesktopWindowsTitles(); 

      foreach (string app in item) 
      { 
       ListBoxapp.Items.Add(app); 

      } 
      ListBoxapp.BackColor = System.Drawing.SystemColors.InfoText; 
      ListBoxapp.Size = new System.Drawing.Size(321, 135); 
      ListBoxapp.Font = new System.Drawing.Font("Lucida Console", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 


       if (ListBoxapp.SelectedItem != null) 
       { 
       MessageBox.Show("App selected is" + ListBoxapp.SelectedItem.Tostring()) 
       } 
} 

Так эта работа отлично добавляет на моей панели, я могу выбрать элемент, но ничего не происходит.

Я уверен, что это потому, что я не могу добавить (после ListBoxapp.Font **)

ListBoxapp.SelectedIndexChanged += new System.EventHandler(ListBoxapp_SelectedIndexChanged); 

он говорит мне ListBoxapp_SelectedIndexChanged не существует. Но, учитывая динамическое добавление, я не могу сделать это с «приоритетами». Я не знаю, чтобы добавить его по-другому. Спасибо.

+1

У вас есть метод с именем 'ListBoxapp_SelectedIndexChanged' определен в твой класс ? – user3185569

+0

Хо, я не понял, что это был метод! – jsls

+0

проверить ответ ниже – user3185569

ответ

2

Определить событие, подписаться на него и получить доступ к ListBox с помощью отправителя:

private void ListBoxapp_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    ListBox lBox = sender as ListBox; 

    // do whatever you want 
} 

добавить это к вашему публикуемому коду:

ListBoxapp.SelectedIndexChanged += ListBoxapp_SelectedIndexChanged; 
+0

Проблема не в том, что messagebox.show не отображается – jsls

+0

@jsls. Вы не подписываетесь на событие, поэтому оно не срабатывает при изменении выбранного элемента. – user3185569

+0

У меня есть небольшая проблема, тогда я хотел бы иметь другую кнопку, которая добавляет один и тот же список, но не делает то же самое (другое текстовое поле). как я могу назвать этот метод (selectedIndexChanged) из моего app1button void? – jsls

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