在另一个 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");
我在处理事件时遇到 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");