首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到ToolStripCombobox.SelectionChangeCommitted

找不到ToolStripCombobox.SelectionChangeCommitted
EN

Stack Overflow用户
提问于 2015-05-04 18:37:13
回答 2查看 746关注 0票数 1

我有两个ToolStripCombobox控件,每个控件都附加了SelectedIndexChanged侦听器。

当我以编程方式修改项集合时,我遇到了一个问题。我最终不情愿地触发了SelectedIndexChanged。

在网上搜索解决方案时,我找到了OnSelectionChangeCommitted 和相应的事件,但Visual studio说:

代码语言:javascript
复制
'System.Windows.Forms.ToolStripComboBox.OnSelectionChangeCommitted(System.EventArgs)' is inaccessible due to its protection level.

如果不能使用SelectionChangeCommitted,还有什么其他方法可以避免在手动更新ToolStripComboBox项目时触发事件?

Im使用的是.Net 4.0,ToolStripComboBox配置了DropDownStyle = DropDownList

EN

回答 2

Stack Overflow用户

发布于 2017-07-17 14:38:47

您可以从底层ComboBox访问它。

代码语言:javascript
复制
toolStripComboBoxExample.ComboBox.SelectionChangeCommitted += ComboBoxOnSelectionChangeCommitted;

private void ComboBoxOnSelectionChangeCommitted(object o, EventArgs eventArgs)
{
    \\Your code goes here.
}
票数 2
EN

Stack Overflow用户

发布于 2015-05-04 19:07:52

您可以在SelectedIndexChanged事件本身中执行您的操作。通过声明一个全局bool变量并从SelectedIndexChanged事件中检查它来验证触发器的类型,您可以实现这一点。这就像,

代码语言:javascript
复制
    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
        }
    }

希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30028014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档