有几个自定义类型的控件,给这几个控件添加MouseDown事件,在事件响应函数中想实现一下功能
Mouse(object sender, MouseEventArgs e)void Mouse(object sender, MouseEventArgs e)
{
//获取sender的实际类型
//根据实际的类型完成我的自定义操作
}因为这几个控件的时间相应函数中的操作都相同,所以不想单独对每个控件写一个相应程序,有什么方法可以获取到sender实际被装箱的类型
我的笨方法就是对于每个控件类型使用as运算符
如下:
MyType1 mt1=sender as MyType1;
MyType2 mt2=sender as MyType2;
MyType3 mt3=sender as MyType3;if(mt1!=null)
{
//......
}if(mt2!=null)
{
//......
}if(mt3!=null)
{
//......
}但是这样的代码太臃肿,而且在我添加新的类型控件的时候也不方便
请问大家有没有什么好的方法
Mouse(object sender, MouseEventArgs e)void Mouse(object sender, MouseEventArgs e)
{
//获取sender的实际类型
//根据实际的类型完成我的自定义操作
}因为这几个控件的时间相应函数中的操作都相同,所以不想单独对每个控件写一个相应程序,有什么方法可以获取到sender实际被装箱的类型
我的笨方法就是对于每个控件类型使用as运算符
如下:
MyType1 mt1=sender as MyType1;
MyType2 mt2=sender as MyType2;
MyType3 mt3=sender as MyType3;if(mt1!=null)
{
//......
}if(mt2!=null)
{
//......
}if(mt3!=null)
{
//......
}但是这样的代码太臃肿,而且在我添加新的类型控件的时候也不方便
请问大家有没有什么好的方法
解决方案 »
- 求指导--正则表达式2例
- 急!关于PrintPreviewDialog这个控件里面怎么屏蔽打印功能?
- 学习
- (SQL2005)数据库还原后显示的是“受限制用户”请问该如何解决!!!!!!!!
- 。NET自带的程序做的安装包。在安装时如何判断是否已有该程序的旧版本。
- C#可不可以创建可更新记录集
- B/S程序调试过程中出现如下错误:未处理的“System.InvalidOperationException”类型的异常出现在 mscorlib.dll 中。如何解决?
- 请教:如何让DataGrid中的DataGridBoolColumn在窗体创建时初始化为未选中
- 使用Process.Start启动一个外部exe程序如何使它最小化?
- C#和SQL数据库的有关问题
- 麻烦问一下。。知道一个控件的经纬度画了一个圆!刷新的时候如何在原来的位置重绘一个圆??
- c#Socke:一个服务器只能对应一个客户端发数据,2个客户端无效,请问如何修改?
不过,事件处理函数还是要分开写的
你可以用sender.GetType()方法来获取它的真实类型名称,再根据自己的业务需求做下一步的处理。
但,这里给你一个建议:接下来如何做,直接影响到你上一步判定sender类型的用途,
做不好,你判断了实际类型,也没有太大意义。
处理函数要分开写,既然你的规则大体相同,何不尝试一下设计模式中的一种或多种?