我有一个文本框和RichTextBox的事件处理程序.代码完全相同,但是
在处理程序#1中我做:
RichTextBox tb = (RichTextBox)sender
因此在处理程序#2中:
TextBox tb = (TextBox)sender
这样做我可以完全操纵发送控件.我想知道的是如何使用发送对象根据其类型将发送对象强制转换为Textbox或RichTextbox
sender.GetType().Name
然后在运行时创建控件并使用它.这样我只需要一个事件处理函数:更少的代码,更少的错误,更容易维护和干:-)
你永远不必投.当我开始时,我曾经以同样的方式思考,这种"模式"是不正确的,而且不是很合乎逻辑.
你最好的选择是使用类似的东西:
if (sender is TextBox) { TextBox tb = (TextBox)sender; } else if (sender is RichTextBox) { RichTextBox rtb = (RichTextBox)sender; } else { // etc }
我知道这是一个非常古老的帖子,但在框架4中,您可以将发件人转换为控件:
Control cntrl = (Control)sender; cntrl.Text = "This is a " + sender.GetType().ToString();
请注意,您只能引用所有不同控件共有的控件(即Text).