2017-09-06 45 views
1

我在ComboxboxWinForm的組合框SelectedValue屬性VS的SelectedIndex

的foreach添加 「索引」 對象到每個項目(在索引VAR指數) { UniqueIndexComboBox.Items.Add(索引); }

當用戶從下拉列表中選擇一個索引項時,下面的事件都會被觸發。我不確定區別。

私人無效UniqueIndexComboBox_SelectedValueChanged(對象發件人,EventArgs的) 私人無效UniqueIndexComboBox_SelectedIndexChanged(對象發件人,EventArgs的)

當我interegate以下屬性,所述的SelectedValue始終爲空,但我仍然可以訪問選擇的索引值通過使用SelectedIndex值作爲項目列表中的索引。使用WinForm組合框,爲什麼選擇 ? UniqueIndexComboBox.Items [UniqueIndexComboBox.SelectedIndex] == null false ? UniqueIndexComboBox.SelectedValue == null true

爲什麼SelectedValue選項也不起作用? DropDownStyle屬性的值是否相關?

+0

'SelectedValue'需要'ValueMember'財產和填充'ComboBox'與循環不會設置'ValueMember',你需要給索引作爲數據源。 – Berkay

+0

正如Berkay所說,SelectedIndex屬性是項目列表中當前選定項目的從零開始的索引,如果沒有選擇項目,則爲-1。不需要爲值添加(數據庫啓發的?)索引。有關更多詳細信息,請參閱MSDN文檔。如果'SelectedIndex'>> = 0,'UniqueIndexComboBox.Items [UniqueIndexComboBox.SelectedIndex]'總是非空的,因爲選擇了一個項目。如果'ComboBox'是數據綁定的,則使用'SelectedValue'。 – KBO

回答

0

SelectedIndex是基於零的索引編號(間接位置編號) SelectedValue是選定項目的實際值(用戶不可見)。在你的情況下,SelectedValue總是爲空,因爲你沒有提供它如下。

實現組合框的的SelectedValue,組合框應設置它的DataSource屬性不是Items.Add()方法

例如

 var items = new List<object>(); 
     for (int i = 1; i <= 10; i++) 
     { 
      items.Add(new { Value = i, Text = "Text "+i }); 
     } 

     comboBox1.DataSource = items; 
     comboBox1.DisplayMember = "Text"; 
     comboBox1.ValueMember = "Value"; 
相關問題