使用事件将信息传递给父表单

时间:2015-05-01 18:08:05

标签: c# winforms events event-handling

我有一个用户控件类,它具有以下行为(非常正常的东西)

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的属性。我不确定为什么......
当然,帮助是值得赞赏的,希望你能看到我想要的东西。

1 个答案:

答案 0 :(得分:0)

在C1类中创建属性后,需要转换activeControl

if (activeControl is C1)
    (activeControl as C1).TxtThingProperty.TextChanged += new EventHandler(MyCustomHandler);