2015-05-04 62 views
0

我有兩個ToolStripCombobox控件,每個控件都附有SelectedIndexChanged偵聽器。ToolStripCombobox.SelectionChangeCommitted not found

我以編程方式修改項目集合時遇到問題。我最終不情願地觸發了SelectedIndexChanged。

在網上尋找解決的辦法,我發現OnSelectionChangeCommitted和corrensponding事件,但Visual Studio中說:

'System.Windows.Forms.ToolStripComboBox.OnSelectionChangeCommitted(System.EventArgs)' is inaccessible due to its protection level. 

如果這是不可能利用SelectionChangeCommitted,還有什麼其他的方式都存在,以避免觸發事件時,手動更新ToolStripComboBox項目?

Im使用.Net 4.0,而ToolStripComboBox配置爲DropDownStyle = DropDownList

回答

0

你可以在SelectedIndexChanged事件本身內做你的東西。通過聲明全局變量bool並從SelectedIndexChanged事件中檢查它以驗證觸發器的類型,可以實現此目的。那是後話像,

bool isManualFire = true; 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     //Clear isManualFire flag in case of programatical changes 
     isManualFire = false; 

     //Do programatic changes on toolStripComboBox1 

     //Set it back to get manual triggerings 
     isManualFire = true; 
    } 

    private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (isManualFire) 
     { 
      //DO some operations 
     } 
    } 

希望這有助於...

1

您可以從下面的組合框訪問。因爲它提供了一個直接的回答原來的問題,是解決問題的最佳解決方案

toolStripComboBoxExample.ComboBox.SelectionChangeCommitted += ComboBoxOnSelectionChangeCommitted; 

private void ComboBoxOnSelectionChangeCommitted(object o, EventArgs eventArgs) 
{ 
    \\Your code goes here. 
} 
+0

這應該被標記爲正確答案。 –