一、了解C#中的預定義事件處理機制
在寫代碼前我們先來熟悉.net框架中和事件有關的類和委托,了解C#中預定義事件的處理。
EventArgs是包含事件數據的類的基類,用於傳遞事件的細節。
EventHandler是一個委托聲明如下
public delegate void EventHandler( object sender , EventArgs e )
注意這里的參數,前者是一個對象(其實這里傳遞的是對象的引用,如果是button1的click事件則sender就是button1),后面是包含事件數據的類的基類。
方案:
我們創建一個cmbChanged方法,傳遞sender。然后在combobox觸發不同事件的時候都可以引用這個方法。
如下代碼,不管哪個事件觸發,我們將combobox選擇展示的內容都賦給一個參數:cmbMarkNumText 。
1 private void cmbMarkNum_SelectedIndexChanged(object sender, EventArgs e)//選擇下拉選項時 2 { 3 cmbMarkNumText = cmbChanged(sender); 4 } 5 private void cmbMarkNum_TextUpdate(object sender, EventArgs e)//combobox輸入文字改變時 6 { 7 cmbMarkNumText = cmbChanged(sender); 8 } 9 private string cmbChanged(object sender) 10 { 11 string rtxt; 12 ComboBox cmb = (ComboBox)sender;//強制吧sender轉換為ComboBox類型賦值給cmb. 13 return rtxt = cmb.Text; 14 }
C# 怎么實現ComboBox“只能選擇,不能修改”的功能
DropDownStyle 屬性設置為 DropDownList.
#Simple 簡單的下拉列表框(始終顯示列表)。
#DropDown 可以編輯,與有下拉列表。默認。
#DropDownList 只有下拉列表,不能編輯。
其他閱讀:C#事件中sender的小用法
淺析C#的事件處理和自定義事件[object sender , EventArgs e]
Combobox賦值拓展: Combobox設置 DataSource 后,其 Text 會自動變為源中首項,而不再是原值。
