C#UserControl委托和事件

时间:2018-03-05 13:07:07

标签: c# winforms events delegates

我对Windows窗体应用程序中的事件没有什么问题。我无法访问Form1中的UserControl事件。

public partial class KomisControl : UserControl
{

    public KomisControl()
    {
        InitializeComponent();

    }
    private static KomisControl _instance;

    public static KomisControl Instance
    {
        get
        {
            if (_instance == null)
                _instance = new KomisControl();
            return _instance;
        }

    }
    public delegate void AddButtonEventHandler(object o, EventArgs e);

    public event AddButtonEventHandler AddButtonEv;

    protected virtual void OnAddButton()
    {
        AddButtonEv?.Invoke(this, EventArgs.Empty);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        OnAddButton();

    }
}

Form1中:

Form1

1 个答案:

答案 0 :(得分:1)

事件不是static所以只有类名才能访问它。您需要使用Instance变量,并且需要在构造函数的范围内编写代码:

public Form1()
{
    //..all the other stuff.....
    KomisControl.Instance.AddButtonEv += ...

}