我有一个用户控制类,它具有以下行为(非常正常的东西)
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类中创建一个属性来获得它(甚至只是文本),我仍然无法"获得"我需要的控件pr属性,我不知道为什么。。。我能看到的唯一属性(在intelligense中使用activeControl.)是标准的用户控件属性,而C1的任何属性都没有。我不知道为什么
我们当然很感激您的帮助,希望您能看到我想要得到的东西。
在C1类中创建属性后,需要强制转换activeControl
。
if (activeControl is C1)
(activeControl as C1).TxtThingProperty.TextChanged += new EventHandler(MyCustomHandler);