C#事件如何根据object sender、EventArgs e 得到事件本身名称?(sender as xxxxx)这个控件哪个事件执行这个方法呢?例如我有一个控件textBox1, 定义了它的Click、Enter、Leave……等多个事件都为相同的一个方法
private void 方法(object sender、EventArgs e),那我方法在这个方法里知道是click还是Enter还是Leave来调用它,然后根据这个来作不同的操作,因为有10个事件都是很简单的一个操作,不想分别写10个方法,想写到一个方法里判断,请大家指教下小弟,谢谢大家。
private void 方法(object sender、EventArgs e),那我方法在这个方法里知道是click还是Enter还是Leave来调用它,然后根据这个来作不同的操作,因为有10个事件都是很简单的一个操作,不想分别写10个方法,想写到一个方法里判断,请大家指教下小弟,谢谢大家。
1.你是把同一个控件的不同事件绑定到同一个方法,所以sender始终是这个控件,这个参数无法区别不同的事件2.剩下e这个函数,不同的事件,参数e可能不同,例如你用回车敲button,和用鼠标单击button,这个参数不同,可以区分。但还有大量的情况是不能区分的,比如Enter和Leave
能不能区分,有个很简单和通用的方法:对e调用GetHashCode你会发现Enter和Leave事件,e的哈希代码是一样的,所以无法区分
sender is source to data
e is instances to class
event.type就可以显示事件名(click),那除了GetHashCode,还有没有方法可以像JS的event.type那样,获得调用这个方法的事件名称,希望有方法,可以在以下的text1_fun方法中,判断到底是Scroll、Click、Enter、Leave哪个事件调用了当前的text1_fun方法以便进行不同的操作。text1.Scroll += new System.EventHandler(text1_fun);
text1.Click += new System.EventHandler(text1_fun);
text1.Enter += new System.EventHandler(text1_fun);
text1.Leave += new System.EventHandler(text1_fun);
如果你想实现你说的效果,你可以写个通用方法,比如:
private void abc()
{
...//在这里输入你的代码
}
然后你在其他10个方法中,调用此方法即可。