星期五, 7月 17, 2015

[C#] 自訂控制項內的事件

練習撰寫自訂控制項時發現沒有辦法在 Winform 上呼叫自訂控制項內控件的事件,找些資料才發現,必須自行撰寫事件來觸發

方案內容

[C#] 自訂控制項內的事件-1


建立一個使用者自訂控制項,並拖進一個 Button 來使用

[C#] 自訂控制項內的事件-2

建立事件和事件觸發函數,並在 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,所以在工具箱內就會自動出現自訂控制項

[C#] 自訂控制項內的事件-3

在 WinForm 中的 iButton 內就可以看見 btnClick Event 可以使用

[C#] 自訂控制項內的事件-4
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#] 自訂控制項內的事件-5

沒有留言:

張貼留言