读书人

请教怎么区分不同的选择项发生改变的

发布时间: 2012-06-11 17:42:22 作者: rapoo

请问,如何区分不同的选择项发生改变的调用
有个listBox1,它有个选定项发生改变的事件:
listBox1_SelectedIndexChanged(object sender, EventArgs e)

目前,有这么几种情况,使得选定项发生改变
1:鼠标点击项
2:键盘箭头键上下移动,选定项
3:在代码中SetSelected,选定项


我现在需要使第3种和前面2种产生一个区别,使得listBox1_SelectedIndexChanged(object sender, EventArgs e)能区别执行不同的代码


请问,该怎么做?

[解决办法]
简单点可以这样

C# code
this.listBox1.SelectedIndexChanged -= new EventHandler(listBox1_SelectedIndexChanged);this.listBox1.SetSelected(..., ...);// 这样 SetSelected 就不触发事件,在这里执行些别的代码this.listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);
[解决办法]
C# code
// 调用 SetSelected 的代码this.listBox1.SelectedIndexChanged -= new EventHandler(listBox1_SelectedIndexChanged);this.listBox1.SetSelected(..., ...);// 在这执行 SetSelectedthis.listBox1_SelectedIndexChanged(null, null); // 直接调用事件方法,等同于触发this.listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);// 事件方法private void listBox1_SelectedIndexChanged(object sender, EventArgs e){    if (sender == null)    {        // 是 SetSelected 触发的    }    else    {        // 是别的触发的    }}
[解决办法]
listBox1_SelectedIndexChanged(object sender, EventArgs e)
时间里面判断键盘鼠标事件,是否是键盘和鼠标触发的,,第三种是代码触发的很好区分

读书人网 >C#

热点推荐