我有一个用户控件类,它具有以下行为(非常正常的东西)
public class C1
{
//controls with auto generated code in the designer file that I can access
//such as with the following action (for example)
string s1 = txtThing.Text;
}
它通过父表单中的调用动态创建(并与其他类一起销毁),如:
public class MainForm
{
UserControl activeControl = null;
//...later on...
activeControl = new C1(params...)
//later on, as a new control is needed
panel.Controls.Clear();
}
我需要动态地向文本框文本更改事件添加事件处理程序,并且该事件存在于MainForm类中。所以我想做一些像
这样的事情activeControl.txtThing.TextChanged += new EventHandler(MyCustomHandler);
但文本框显然是私密的。如果我在C1类中创建e属性来获取它(或者甚至只是文本),我仍然无法“获取”我需要的控制pr属性,我不知道为什么...我能看到的唯一属性(使用activeControl .in intellisense)是标准的用户控件属性,而不是C1的属性。我不确定为什么......
当然,帮助是值得赞赏的,希望你能看到我想要的东西。
答案 0 :(得分:0)
在C1类中创建属性后,需要转换activeControl
。
if (activeControl is C1)
(activeControl as C1).TxtThingProperty.TextChanged += new EventHandler(MyCustomHandler);