日期:2014-05-17  浏览次数:20865 次

怎样在窗体Load事件时取消触发ComboBox.SelecedtIndexChanged事件
意图:
    在窗体Load完后才激活ComboBox.SelectedIndexChanged事件

原因:
    在执行
           ComboBox.DataSource = (DataSet).Tables[""];
         ComboBOx.Displaymember = "";
         ComboBOx.Valuemember = "";
    会触发三次SelectedIndexChanged事件

解决方案:
    用bool属性来控制是否执行内部语句,但还是会触发,感觉这个方法比较傻瓜式


新手学习Winform,请大神解惑

------解决方案--------------------
可以这么写:
    this.comboBox1.Items.Insert(0, "111");
            this.comboBox1.Items.Insert(1, "222");
            this.comboBox1.Items.Insert(2, "333");

------解决方案--------------------
引用:
    用bool属性来控制是否执行内部语句,但还是会触发,感觉这个方法比较傻瓜式

这个方法我感觉很好,我一点也不觉得傻瓜。
------解决方案--------------------
不要通过双击的方式来添加事件,在Form_load事件里直接添加控件的事件
void Form_Load(object sender ,EventAgrs e)
{
 ComboBOx.Displaymember = "";
 ComboBOx.Valuemember = "";
 ComboBox.DataSource = (DataSet).Tables[""];
 ComboBox.SelectedIndexChanged+= new EventHandle(ComboBox_SelectedIndexChanged);
}
        
void ComboBox_SelectedIndexChanged(object sender ,EventArgs e)
{
    //Do something
}
------解决方案--------------------
或者。
 ComboBox.SelectedIndexChanged -= ComboBox_SelectedIndexChanged; 
 ComboBox.DataSource = (DataSet).Tables[""];
 ComboBOx.Displaymember = "";
 ComboBOx.Valuemember = "";
 ComboBox.SelectedIndexChanged += new EventHandle(ComboBox_SelectedIndexChanged);