开发者

DataGridView's SelectionChange event firing twice on DataBinding even after removing event binding

This Code triggers selection change event twice. how can I prevent it ? Currently i m using a flag or focused property to prevent this. But what is the actual way ?

I am using it on winfoms

EDIT

My Mistake in writing Question, here is the correct code that i wanted to ask

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, Even开发者_开发百科tArgs e)
{
//this function is raised twice, i was expecting that this will not be raised 
}


The event will fire each time you set the DataSource property.

You should only set DataSource once.

You might be adding the same event handler twice.
Right-click on dgvGuestInfo_SelectionChanged and click Find All References.

Also, check the call stack in the event handler.


I have your very same problem: sometimes deregistering from SelectionChanged works, sometimes not.

And I'm unregistering/reregistering in a try/finally construct:

            this.SelectionChanged -= ManageSelectionChanged;

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

I've choosen to use a private flag too, but... I'm still curious.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜