请问,如何区分不同的选择项发生改变的调用

dffdfds3 2012-06-10 11:11:17
有个listBox1,它有个选定项发生改变的事件:
listBox1_SelectedIndexChanged(object sender, EventArgs e)

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


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


请问,该怎么做?
...全文
121 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dffdfds3 2012-06-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

listBox1_SelectedIndexChanged(object sender, EventArgs e)
时间里面判断键盘鼠标事件,是否是键盘和鼠标触发的,,第三种是代码触发的很好区分
[/Quote]
在listBox1_SelectedIndexChanged事件里,如何判断是鼠标点击事件还是键盘触发的呢?
熙风 2012-06-10
  • 打赏
  • 举报
回复
listBox1_SelectedIndexChanged(object sender, EventArgs e)
时间里面判断键盘鼠标事件,是否是键盘和鼠标触发的,,第三种是代码触发的很好区分
__天涯寻梦 2012-06-10
  • 打赏
  • 举报
回复

// 调用 SetSelected 的代码
this.listBox1.SelectedIndexChanged -= new EventHandler(listBox1_SelectedIndexChanged);
this.listBox1.SetSelected(..., ...);// 在这执行 SetSelected
this.listBox1_SelectedIndexChanged(null, null); // 直接调用事件方法,等同于触发
this.listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);

// 事件方法
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (sender == null)
{
// 是 SetSelected 触发的
}
else
{
// 是别的触发的
}
}
dffdfds3 2012-06-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

简单点可以这样
C# code
this.listBox1.SelectedIndexChanged -= new EventHandler(listBox1_SelectedIndexChanged);
this.listBox1.SetSelected(..., ...);
// 这样 SetSelected 就不触发事件,在这里执行些别的代码
this.listBox1.Selecte……
[/Quote]
我需要SetSelected执行,只是在listBox1_SelectedIndexChanged方法内部,有部分代码区别执行
__天涯寻梦 2012-06-10
  • 打赏
  • 举报
回复
简单点可以这样
this.listBox1.SelectedIndexChanged -= new EventHandler(listBox1_SelectedIndexChanged);
this.listBox1.SetSelected(..., ...);
// 这样 SetSelected 就不触发事件,在这里执行些别的代码
this.listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧