即使在删除事件绑定之后,DataGridView的SelectionChange事件也会在DataBinding上触发两次

时间:2010-06-03 15:33:36

标签: c# .net winforms data-binding datagridview

此代码触发选择更改事件两次。我该怎样预防呢? 目前我使用旗帜或聚焦属性来防止这种情况。但实际的方式是什么?

我在 winfoms

上使用它

修改

我的写作错误问题,这是我想问的正确代码

private void frmGuestInfo_Load(object sender, EventArgs e)
{
this.dgvGuestInfo.SelectionChanged -= new System.EventHandler(this.dgvGuestInfo_SelectionChanged);
dgvGuestInfo.DataSource=dsFillControls.Tables["tblName"];
this.dgvGuestInfo.SelectionChanged += new System.EventHandler(this.dgvGuestInfo_SelectionChanged);
}

private void dgvGuestInfo_SelectionChanged(object sender, EventArgs e)
{
//this function is raised twice, i was expecting that this will not be raised 
}

2 个答案:

答案 0 :(得分:0)

每次设置DataSource属性时都会触发事件。

您应该只设置DataSource一次。

您可能会两次添加相同的事件处理程序 右键单击dgvGuestInfo_SelectionChanged,然后单击“查找所有引用”。

另外,检查事件处理程序中的调用堆栈。

答案 1 :(得分:0)

我遇到了同样的问题:有时从SelectionChanged取消注册有效,有时不行。

我在try / finally结构中取消注册/重新注册:

            this.SelectionChanged -= ManageSelectionChanged;

            try
            {
                // code that could fire this.SelectionChanged
            }
            finally
            {                    
                this.SelectionChanged += ManageSelectionChanged;                 
            }

我也选择使用私人旗帜,但是......我仍然很好奇。

相关问题