2014-04-01 16 views
1

每當我們將數據源添加到下面的代碼組合框。爲什麼在添加數據源時選擇了索引更改?

  comboBoxBusNo.DataSource = busNo.Tables[0]; 
      comboBoxBusNo.DisplayMember = "BusId"; 
      comboBoxBusNo.ValueMember = "Id"; 

爲什麼要調用private void comboBoxBusNo_SelectedIndexChanged(object sender, EventArgs e)事件。我們如何阻止這種情況在加載時被調用。

回答

1

將列表綁定到ComboBox時,默認情況下會選中第一個項目,將SelectedIndex設置爲0.在綁定之前沒有項目,因此沒有選擇項目,因此SelectedIndex爲-1以開頭。 SelectedIndex從-1更改爲0,以便引發SelectedIndexChanged事件。

+0

如何解決這個問題,該索引變化事件不會在加載時調用。 –

+0

沒有這樣的解決方案。如果將數據綁定到控件,則SelectedIndex將會更改,如果SelectedIndex更改,則將引發SelectedIndexChanged。如果你想要的只是通知用戶所做的更改,那麼你正在處理錯誤的事件。 SelectionChangeCommitted僅在用戶通過UI進行更改時引發。 – jmcilhinney

0

這將阻止事件發生負載。

comboBoxBusNo.SelectedIndexChanged -= comboBoxBusNo_SelectedIndexChanged; 

     comboBoxBusNo.DataSource = busNo.Tables[0]; 
     comboBoxBusNo.DisplayMember = "BusId"; 
     comboBoxBusNo.ValueMember = "Id"; 

     comboBoxBusNo.SelectedIndexChanged += comboBoxBusNo_SelectedIndexChanged; 
+0

什麼是comboBoxBusNo_SelectedIndexChanged在這裏是它的任何變量或函數。 –

+0

comboBoxBusNo_SelectedIndexChanged是組合框所選索引更改事件的事件處理程序的名稱。 第一行取消連接,最後一行重新連接。 – antelopecarbuilding395

相關問題