当前位置:  开发笔记 > 编程语言 > 正文

使用GetType()在事件处理程序中转发发件人对象.名称

如何解决《使用GetType()在事件处理程序中转发发件人对象.名称》经验,为你挑选了2个好方法。

我有一个文本框和RichTextBox的事件处理程序.代码完全相同,但是

在处理程序#1中我做:

RichTextBox tb = (RichTextBox)sender

因此在处理程序#2中:

TextBox tb = (TextBox)sender

这样做我可以完全操纵发送控件.我想知道的是如何使用发送对象根据其类型将发送对象强制转换为Textbox或RichTextbox

sender.GetType().Name

然后在运行时创建控件并使用它.这样我只需要一个事件处理函数:更少的代码,更少的错误,更容易维护和干:-)



1> leppie..:

你永远不必投.当我开始时,我曾经以同样的方式思考,这种"模式"是不正确的,而且不是很合乎逻辑.

你最好的选择是使用类似的东西:

if (sender is TextBox)
{
  TextBox tb = (TextBox)sender;
}
else if (sender is RichTextBox)
{
  RichTextBox rtb = (RichTextBox)sender;
}
else
{
  // etc
}


一旦确定了对象的类型,您实际上就是在进行转换,因此您必须进行转换,但这绝对是正确的方法,因为它不依赖(缓慢的)反射。

2> Mark Kram..:

我知道这是一个非常古老的帖子,但在框架4中,您可以将发件人转换为控件:

Control cntrl = (Control)sender;
cntrl.Text = "This is a " + sender.GetType().ToString();

请注意,您只能引用所有不同控件共有的控件(即Text).

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有