首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么在窗体Load事件时取消触发ComboBox.SelecedtIndexChanged事件

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

怎样在窗体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);

热点排行