C#Form UserControl OnClick事件

时间:2013-05-24 06:52:30

标签: c# winforms user-controls onclick

我为一个类似于按钮操作的Windows窗体创建了一个自定义用户控件(请不要建议我只使用一个按钮,因为我将在此用户控件中存储数据),但我无法弄清楚如何让OnClick()事件发生。我已经筛选了一些教程,并在网站上查看了一些类似的问题,但我似乎无法让事件发生 - 所以我要么做错了,要么每个人都发错了代码(我希望它不是后者)

在我的自定义control.cs中,

namespace MobCreator {
    public partial class MOBSample : UserControl {
        public MOBSample() {
           InitializeComponent();
        }
        protected override void OnMouseUp(MouseEventArgs e) {
           this.BorderStyle = BorderStyle.FixedSingle;
           base.OnMouseUp(e);
        }
        protected override void OnMouseDown(MouseEventArgs e) {
           this.BorderStyle = BorderStyle.Fixed3D;
           base.OnMouseDown(e);
        }
        public event EventHandler ButtonClick;
        private void OnButtonClick(object sender, EventArgs e) {
           // invoke UserControl event here
           if (this.ButtonClick != null) this.OnButtonClick(sender, e);
        }
    }
}

在我的form.cs中,

private void MobCreatorForm_Load(object sender, EventArgs e) {
    UserControl1.ButtonClick += new EventHandler(this.CustomEvent_Handler);
}
private void CustomEvent_Handler(object sender, EventArgs e) {
    Console.WriteLine("Click");
}

然而,当我运行该程序时,我的控制台从不输出“Click”。

2 个答案:

答案 0 :(得分:0)

检查this link on MSDN:这是一个简单的事件教程,你应该能够适应你的场景。

初看起来,您可能缺少的是您的活动的代表。

答案 1 :(得分:0)

试试这个

private void MobCreatorForm_Load(object sender, EventArgs e)
{
    CustomEvent_Handler(null,null);
}

private void CustomEvent_Handler(object sender, EventArgs e)
{
     Console.WriteLine("Click");
}