首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SelectedIndexChanged事件多次触发

SelectedIndexChanged事件多次触发
EN

Stack Overflow用户
提问于 2013-01-31 00:10:04
回答 1查看 1.8K关注 0票数 2

当用户更改我的网格中DataGridViewComboBoxColumn的值时,我需要执行一个操作。假设我必须显示一条消息。

问题是messagebox.show("hello")代码执行了数百万次。

这是我的代码。

代码语言:javascript
复制
grilla.EditingControlShowing+=new DataGridViewEditingControlShowingEventHandler(grilla_EditingControlShowing);

void  grilla_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if (e.Control is ComboBox) //i have only one combobox column.
            {
                ComboBox cb = (ComboBox)e.Control;
                // first remove event handler to keep from attaching multiple:
                cb.SelectedIndexChanged -= new EventHandler(cb_SelectedIndexChanged);

                // now attach the event handler
                cb.SelectedIndexChanged += new EventHandler(cb_SelectedIndexChanged);
            }

        }

        void cb_SelectedIndexChanged(object sender, EventArgs e)
        {
            MessageBox.Show("hello");
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-01 22:16:50

最后,y找到了我想要的代码:

代码语言:javascript
复制
grid.CurrentCellDirtyStateChanged += (s, e) => 
            {
                if (grid.IsCurrentCellDirty)
                {
                    grid.CommitEdit(DataGridViewDataErrorContexts.Commit);

                    MessageBox.Show("hello");
                }
            };

更改comboboxcell的值后,该消息仅显示一次。

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

https://stackoverflow.com/questions/14608491

复制
相关文章

相似问题

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