2016-07-19 9 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

して、イベントを定義し、それに加入すると、送信者を使用して、リストボックスにアクセスします。

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

私は少し問題がある、私は同じリストを追加する別のボタンを持っていると思いますが、同じことをしない(別のテキストボックス)。どうすれば私のapp1button voidからこのメソッド(selectedIndexChanged)を呼び出すことができますか? – jsls

関連する問題