2012-09-19 73 views
0

我不知道如何爲SO記錄此問題。我在WinForm和C#編程。在窗口中添加了一個組合框併爲其編寫了事件處理程序。此窗口上的所有其他控件都會生成它們的點擊事件,但不會生成combox?應該沒有什麼關係,但事件處理程序不會被執行,無論我點擊下拉箭頭或組合框本身多少次。爲什麼comboBox1_SelectedIndexChanged事件處理程序永遠不會在C#中執行

private void InitializeComponent() 
    { 

     // 
     // comboBox1 
     // 
      this.comboBox1.AllowDrop = true; 
      this.comboBox1.FormattingEnabled = true; 
      resources.ApplyResources(this.comboBox1, "comboBox1"); 
      this.comboBox1.Name = "comboBox1"; 
      this.comboBox1.SelectedIndexChanged += new System.EventHan(this.comboBox1_SelectedIndexChanged); 
     // 
    } 

在此先感謝您的幫助。

回答

2

按照你的描述,聽起來你只是點擊下拉菜單,期待它觸發事件。您是否真的在菜單中選擇了其他選項,或者只需單擊箭頭? SelectedIndexChanged只有當您在更改菜單中選定的選項時纔會觸發。此外,在你的代碼中,你有這樣的:

this.comboBox1.SelectedIndexChanged += new System.EventHan(this.comboBox1_SelectedIndexChanged); 

這究竟是什麼?這不應該編譯。應該是:

this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); 

編輯:

好吧,我想我知道發生了什麼事情。雙擊設計器中的控件來連接事件?如果是這樣,則爲該控件連接默認事件。所以對於一個按鈕,默認是Click事件。對於組合框,默認值爲SelectedIndexChanged事件,而不是'點擊'事件。要連接ComboBox上的Click事件,請在設計器中打開表單。然後在設計器中選擇組合框,然後按CTRL + W,P。這將打開控件的「屬性」窗口。單擊該窗口頂部的閃電圖標,它將顯示您可以在控件上使用的所有事件。在列表中找到「單擊」並雙擊它,它將連接事件並將您帶到該事件的新處理程序。

+1

非常感謝你。你是對的錢。 – user1298925

0
this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); 

或只是

this.comboBox1.SelectedIndexChanged += this.comboBox1_SelectedIndexChanged; 
+0

謝謝你,但格羅默的回答是正確的,並解決了這種情況 – user1298925

+0

我不是那麼快。別客氣。 –

相關問題