2017-11-04 80 views
0

我試圖從一個單獨的事件中獲取動態製作的組合框中的項目的值。我需要把用戶選擇的值放入一個字符串中,但我找不到一種方法來實現它。這是一個例子。如何獲取C#中動態生成的控件的值?

  ComboBox player1Role = new ComboBox(); 
     player1Role.Width = 100; 
     player1Role.Items.Add("Top"); 
     player1Role.Items.Add("Jungle"); 
     player1Role.Items.Add("Mid"); 
     player1Role.Items.Add("Bot"); 
     player1Role.Items.Add("Support"); 
     player1Role.Items.Add("Fill"); 
     player1Role.Location = new Point(200, 200); 

然後在下面點擊事件,我需要得到他們所選擇的價值:

 private void CreateParty_Click(object sender, EventArgs e) 
    { 

     ComboBox player1SelectedRole = (ComboBox)Controls["player1Role"]; 
     string player1roleString = player1SelectedRole.Items[0].ToString(); 
     MessageBox.Show(player1roleString); 
    } 

該代碼只是給了我一個異常說player1SelectedRole是空的。我究竟做錯了什麼?

回答

0

您正在通過名稱查找控件,但是您沒有爲控件指定名稱。

player1Role.Name = "player1Role"; 

另外,我覺得player1SelectedRole.Items[0]總是要選擇第一項,無論哪一個是實際選擇的。改爲player1SelectedRole.SelectedItem

+0

關於SelectedItem你的權利,但即使我分配一個名稱,我仍然得到相同的結果。 –

+0

我剛剛測試過@勞倫斯。我得到一個沒有名字的例外,但它可以與它一起工作。如果不是這樣,那麼別的東西就是錯的。 CreateParty_Click方法附帶了什麼事件? –

+0

啊,你的正確,對不起。你的.name修正了它,我的問題是我在form1中尋找控件,而不是它附加到的實際東西,因此爲什麼它顯示爲空。改變它並添加你的.name修復它,謝謝你的幫助! –

相關問題