方案內容
建立一個使用者自訂控制項,並拖進一個 Button 來使用
建立事件和事件觸發函數,並在 Click 中秀出訊息表示有被觸發
namespace UC
{
public partial class iButton : UserControl
{
// 建立事件和事件觸發函數
public event EventHandler btnClick;
protected void OnbtnClick(EventArgs e)
{
if (btnClick != null)
btnClick(this,e);
}
public iButton()
{
InitializeComponent();
}
private void btn_Click(object sender, EventArgs e)
{
MessageBox.Show("UserControl 內觸發");
// 觸發 btnClick Event
OnbtnClick(e);
}
}
}
建置 UC 專案,因為 WinFormShow 和 UC 專案在同一個 Solution,所以在工具箱內就會自動出現自訂控制項在 WinForm 中的 iButton 內就可以看見 btnClick Event 可以使用
namespace WindowsFormsApplication1
{
public partial class frmUserControlEvent : Form
{
public frmUserControlEvent()
{
InitializeComponent();
}
private void frmUserControlEvent_Load(object sender, EventArgs e)
{
iButton.btnClick += iButton_btnClick; ;
}
void iButton_btnClick(object sender, EventArgs e)
{
MessageBox.Show("在 Form 中觸發");
}
}
}
執行 WinFormShow 並點選 iButton 觀察結果- 延伸閱讀
- [C#] Delegate 練習 1、2
- [C#] Event 練習
- 參考資料
- 【C#】自訂控制項裡的button事件 如何讓上層的Form註冊
- 論壇討論 1、2
沒有留言:
張貼留言