方案內容
建立一個使用者自訂控制項,並拖進一個 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
![[C#] 自訂控制項內的事件-1](https://farm1.staticflickr.com/327/19576453429_fc063fbe81_o.jpg)
![[C#] 自訂控制項內的事件-2](https://farm1.staticflickr.com/328/19575046178_f94115a422_o.jpg)
![[C#] 自訂控制項內的事件-3](https://farm4.staticflickr.com/3755/19575039710_6aff0c0118_o.jpg)
![[C#] 自訂控制項內的事件-4](https://farm1.staticflickr.com/492/19767776001_f0981b4b71_o.jpg)
![[C#] 自訂控制項內的事件-5](https://farm1.staticflickr.com/378/19755798062_2044363784_o.jpg)
沒有留言:
張貼留言