2016-01-07 55 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