你分别在这三个事件里用Console.WriteLine输出信息不行吗?
e.GetType()你想得到什么?
e.GetType()你想得到什么?
解决方案 »
- 紧急请教C#2008程序执行问题!
- 怎样用代码控制DropDownList控件绑定数据库表里面的信息 c#
- Repeater 数据处理 急!!!
- 调试的时候查看call stack的疑问
- .net
- 索引超出了数组的界限.在MartixMultiply.Main(),本人菜鸟请高手解答究竟为何???
- 在鼠标的移动过程中我想判断鼠标现在位于哪个控件上,请问如何做到?
- 如何给grid中所列出的内容增加一列编号?
- 使用BindingSource来新增行,然后Ds.AcceptChanges()时总是滚动到第一行
- 表没有主键。
- 高手帮帮忙,如何获取光标所在区域的控件名!谢谢~~~~~~~~
- 问大家个常识性的问题
我是想把三个事件处理函数的名称写成一个,取名为MouseHandlers
生成private void MouseHandlers(object sender, EventArgs e)
{
}
然后判断e的的具体值来确定进行哪个输出?
问是否能这样处理?如果能,应该怎样操作?
this.textBox1.MouseLeave += new System.EventHandler(this.MouseHandlers);
this.textBox1.MouseEnter += new System.EventHandler(this.MouseHandlers);
this.textBox1.MouseHover += new System.EventHandler(this.MouseHandlers);
文本框添加这个相同的MouseHandlers难道只能是相同类型的多个控件才能添加同一个事件?
不是可以用sender来确定是那个控件发生了这个事件吗?
是不是只能是这种情况?
sender.GetType() 不是可以这样做到吗?
e同样有GetType()方法,不可以吗?
没有做成功过的朋友请不要说行或不行之类的话,希望能给出具体实现,请做过的高手指点一下
谢谢
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); this.textBox1.MouseLeave += new System.EventHandler(this.MouseHandlers_Leave);
this.textBox1.MouseEnter += new System.EventHandler(this.MouseHandlers_Enter);
this.textBox1.MouseHover += new System.EventHandler(this.MouseHandlers_Hover); this.button1.MouseLeave += new System.EventHandler(this.MouseHandlers_Leave);
this.button1.MouseEnter += new System.EventHandler(this.MouseHandlers_Enter);
this.button1.MouseHover += new System.EventHandler(this.MouseHandlers_Hover);
} private void MouseHandlers_Enter(object sender, EventArgs e)
{
Control obj = (Control)sender;
if( obj.Name == "textBox1" )
{
Console.WriteLine("Mouse Enter in textBox1");
}
else if (obj.Name == "button1")
{
Console.WriteLine("Mouse Enter in button1");
}
} private void MouseHandlers_Hover(object sender, EventArgs e)
{ Control obj = (Control)sender;
if (obj.Name == "textBox1")
{
Console.WriteLine("Mouse Hover on textBox1");
}
else if (obj.Name == "button1")
{
Console.WriteLine("Mouse Hover on button1");
}
} private void MouseHandlers_Leave(object sender, EventArgs e)
{ Control obj = (Control)sender;
if (obj.Name == "textBox1")
{
Console.WriteLine("Mouse leave from textBox1");
}
else if (obj.Name == "button1")
{
Console.WriteLine("Mouse leave from button1");
}
}
}
}
上面的代码应该能达到你现在的需求了
这3个鼠标事件无法直接从 EventArgs 里面判断,如果非要判断那只能做得更复杂些,捕获每个需要控制的object的消息来判断
也就是说我想的是可以的,但不是很容易实现
最后还想问一下就是,我的我照着Console.WriteLine("Mouse Enter in textBox1");
Console.WriteLine("Mouse Enter in button1");
但却没有反映,并控制台并没有出现上述语句,望高手们再次指点!
先谢过了
我是找着在vs里一步步做的,包括Form上的两个控件
我是指Console.WriteLine("Mouse Enter in textBox1");没有在控制台输出
但我换成MessageBox.show("Mouse Enter in textBox1");却正常输出
这回应该说清楚了
EventArgs 此类不包含事件数据,在事件引发时不向事件处理程序传递状态信息的事件会使用此类。如果事件处理程序需要状态信息,则应用程序必须从此类派生一个类来保存数据.
msdn 说的,应该能弄出来