在另一个 class 中引发事件以执行 FormMain 中的函数,并传递更多参数

Raise event in another class in order to execute a function in FormMain, and more parameters are passed

我在处理事件时遇到 C# 语法问题。

我在 FormMain 中有以下代码: 1.) private TextfileParser TfP = new TextfileParser(); 2.) (在 FormMain_Load) TfP.MR += new TextfileParser.MessageBox_required(); 3.) 要执行的程序。

private void MessageBox_required(object sender, EventArgs e, string s)
        {
            MessageBox.Show(s,
                            "Database – Load Data",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
        }

TextfileParser.cs包含以下代码:

public delegate void MessageBox_required(object sender, EventArgs e, string Text);
public event MessageBox_required MR;

错误为:

Compiler Error CS1729: "TextfileParser.MessageBox_required" does not contain a constructor that takes 0 arguments.

如果我提出论据,那也是错误的。

我无法应付各种网站和论坛上的示例,尤其是因为人们创建了额外的 类 和程序。我无法想象这必须以如此“复杂”的方式完成。 另外,我必须传递另一个参数(字符串文本)。

现在,您的处理程序方法与委托同名。为清楚起见,让我们重命名您的处理程序方法,如下所示:

private void OnMessageBoxRequired(object sender, EventArgs e, string s)
{
    MessageBox.Show(s,
        "Database – Load Data",
        MessageBoxButtons.OK,
        MessageBoxIcon.Error);
}

订阅活动的正确语法如下:

TfP.MR += OnMessageBoxRequired;

要引发事件,您的 TextfileParser class 需要执行以下操作:

MR?.Invoke(this, EventArgs.Empty, "some string");