设置DataTable中火灾的值SelectedIndexChanged事件

问题描述:

我有一个绑定到一个名为DataTable一个Noteslistbox1,关于这一点我在数据表中的单元格设置值线变化listBox1.SelectedIndex = -1然后重新设定listBox1.SelectedIndex原值和完成。因此,该行将两次调用listBox1_SelectedIndexChanged事件。设置DataTable中火灾的值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) 
{ 

} 

您可以使用触发器布尔领域是:

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 
} 

暂时移除的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; 
} 
+0

为什么它没有来到我的头...谢谢 – SMUsamaShah