C# 在DataTable中设置值将触发SelectedIndexChanged事件
我有一个C# 在DataTable中设置值将触发SelectedIndexChanged事件,c#,winforms,C#,Winforms,我有一个listbox1,它绑定到名为Notes的DataTable上,我在DataTable的单元格中设置值的行会发生变化listbox1.SelectedIndex=-1然后再次设置listbox1.SelectedIndex为原始值并完成。因此,该行两次调用listBox1\u SelectedIndexChanged事件 相反,它甚至不应该称之为那个事件。如何解决这个问题 private void richTextBox1_TextChanged(object sender, Event
listbox1
,它绑定到名为Notes
的DataTable
上,我在DataTable的单元格中设置值的行会发生变化listbox1.SelectedIndex=-1
然后再次设置listbox1.SelectedIndex
为原始值并完成。因此,该行两次调用listBox1\u SelectedIndexChanged
事件
相反,它甚至不应该称之为那个事件。如何解决这个问题
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
if (listBox1.SelectedIndex != -1)
{
dataSet11.Notes.Rows[listBox1.SelectedIndex]["Text"] = richTextBox1.Text;
//this line fires listBox1_SelectedIndexChanged event
//with listBox1.SelectedIndex = -1
//then it changes listBox1.SelectedIndex back to original value before complete execution, and calls the even again
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
暂时删除SelectedIndexChanged处理程序
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
listBox1.SelectedIndexChanged -= listBox1_SelectedIndexChanged;
if (listBox1.SelectedIndex != -1)
{
dataSet11.Notes.Rows[listBox1.SelectedIndex]["Text"] = richTextBox1.Text;
//this line fires listBox1_SelectedIndexChanged event
//with listBox1.SelectedIndex = -1
//then it changes listBox1.SelectedIndex back to original value before complete execution, and calls the even again
}
listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged;
}
暂时删除SelectedIndexChanged处理程序
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
listBox1.SelectedIndexChanged -= listBox1_SelectedIndexChanged;
if (listBox1.SelectedIndex != -1)
{
dataSet11.Notes.Rows[listBox1.SelectedIndex]["Text"] = richTextBox1.Text;
//this line fires listBox1_SelectedIndexChanged event
//with listBox1.SelectedIndex = -1
//then it changes listBox1.SelectedIndex back to original value before complete execution, and calls the even again
}
listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged;
}
您可以为此使用触发器布尔字段:
private TextBox_OntextChanged(object sender, EventArgs args)
{
this.supressEvents = true;
//Do your stuff here
this.supressEvents = false;
}
private void ListBox_OnSelectionChanged(object sender, EventArgs args)
{
if (this.supressEvents)
{
return;
}
//Do your stuff here
}
您可以为此使用触发器布尔字段:
private TextBox_OntextChanged(object sender, EventArgs args)
{
this.supressEvents = true;
//Do your stuff here
this.supressEvents = false;
}
private void ListBox_OnSelectionChanged(object sender, EventArgs args)
{
if (this.supressEvents)
{
return;
}
//Do your stuff here
}
为什么它没有出现在我的脑海里。。。谢谢为什么我没有想到。。。谢谢