2016-01-07 57 views
3

我有一个主要形式和这种形式将基于用户的复选框,点击在运行时加载的用户控件:用户控制事件

如果我点击checkbox1,我会如果我点击checkbox2加载的UserControl1

,我将加载usercontrol2

if (((RadioButton)sender).Checked) 
     { 
      panel3.Controls.Clear(); 
      UC_Buttons_Operation uc_Operation = new UC_Buttons_Operation(); 
      panel3.Controls.Add(uc_Operation); 
     } 

如何从运行时加载的这些用户控件(比如按钮)获取事件?

从我搜索的内容来看,我看到了来自UC的公开活动,主窗体将能够看到它。这很好,但问题是我按运行时加载。 UC之前不会创建。

public event EventHandler CheckedChanged; 
public event EventHandler ButtonClick; 

回答

1

你需要线了事件:

uc_Operation.ButtonClick += UCButtonClick; 

,并实现它:

void UCButtonClick(object sender, EventArgs e) 
{ 
} 

如果你看一下现有的控制窗体设计器的代码,你会看到你的表格实现自己的按钮创建/事件处理。

+0

因为我在运行时加载UC,因此在设计阶段主要是UC,UC不会在那里。我也有很多级联UC。有没有一种简单的方法可以从顶层的最底层开始看事件? – ishtarsg

+0

我不确定我是否遵循,如果您以编程方式创建您的UC,您可以将事件挂起(当然,处理程序需要已经存在),如果您需要通用事件处理程序,那么您可以让每个UC实现给定的接口。因此,在您的代码示例中,在将其添加到面板之前,您需要连接事件。 – NDJ

+0

这就是我所做的 最低的UC只是一个带有文本的按钮,我正在用公共事件EventHandler ButtonClick公开事件EventHandler ButtonClick; ' – ishtarsg