C#UserControl委托和事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#UserControl委托和事件相关的知识,希望对你有一定的参考价值。

我在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

答案

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

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

}

以上是关于C#UserControl委托和事件的主要内容,如果未能解决你的问题,请参考以下文章

创建委托以更改 UserControl 大小

对“xxx”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。 错误解决一例。(代码片段

C#事件是否委托

提升UserControl的默认Click事件

C#中的委托是啥?事件是否一种委托?

WPF UserControl响应窗体的PreviewKeyDown事件