我有两个ToolStripCombobox控件,每个控件都附加了SelectedIndexChanged侦听器。
当我以编程方式修改项集合时,我遇到了一个问题。我最终不情愿地触发了SelectedIndexChanged。
在网上搜索解决方案时,我找到了OnSelectionChangeCommitted 和相应的事件,但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。
发布于 2017-07-17 14:38:47
您可以从底层ComboBox访问它。
toolStripComboBoxExample.ComboBox.SelectionChangeCommitted += ComboBoxOnSelectionChangeCommitted;
private void ComboBoxOnSelectionChangeCommitted(object o, EventArgs eventArgs)
{
\\Your code goes here.
}发布于 2015-05-04 19:07:52
您可以在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
}
}希望这能帮到你。
https://stackoverflow.com/questions/30028014
复制相似问题