如何修复此错误 - C# CS0123:"方法"没有重载与委托"事件处理程序"匹配



我正试图将程序名从表单传递给按钮单击事件。但我不断收到以下错误消息:

"方法"没有重载与委托"EventHandler"匹配;

我在这里读到了类似的问题,并尝试了许多建议,但似乎没有什么能解决我的具体问题。我希望有人能告诉我哪里出了问题。以下是我读过的一些帖子:

';无过载;方法';匹配委托';System.EventHandler';

C#CS0123:匹配委托事件处理程序没有过载

错误-"没有过载;方法";匹配委托';System.EventHandler';?

我似乎不清楚如何匹配我的事件方法的签名。我读过的文件没有帮助。如果有知识渊博的人提供帮助,我们将不胜感激。

我的代码如下:

using System;
using System.Windows.Forms;

namespace ProgramOne
{
public partial class frmLogin : Form
{
public frmLogin(string pgmName)
{
InitializeComponent();
Click += (sender, EventArgs) => { BtnSubmit_Click(sender, EventArgs, pgmName); };
}

private void BtnSubmit_Click(object sender, EventArgs e, string pgmName)
{
txtUserId.Text = txtUserId.Text.Trim();
txtPassword.Text = txtPassword.Text.Trim();
if (txtUserId.Text == "" || txtPassword.Text == "")
{
MessageBox.Show("Please provide a valid UserID and Password");
return;
}
bool securityCheckPassed = true;
if (securityCheckPassed)
{
//Open new form
MessageBox.Show(frmLogin.pgmName);
}
}
}
}

LarsTech和Chetan Ranpariya提供了出色的建议,帮助我解决了这个问题。我的解决方案出现在下面,供像我这样的其他C#新手使用:

using System;
using System.Windows.Forms;
namespace ProgramOne
{
public partial class frmLogin : Form
{
private string pgmName;                      <-- Declare the variable
public frmLogin(string pgmName)
{
InitializeComponent();
this.pgmName = pgmName;                  <-- Initialize with passed value
}
private void BtnSubmit_Click(object sender, EventArgs e)  <-- Remove pgmName from original code above
{
txtUserId.Text = txtUserId.Text.Trim();
txtPassword.Text = txtPassword.Text.Trim();
if (txtUserId.Text == "" || txtPassword.Text == "")
{
MessageBox.Show("Please provide a valid UserID and Password");
return;
}
bool securityCheckPassed = true;
if (securityCheckPassed)
{
//Open new form
MessageBox.Show(pgmName);           <-- Access the name
}
}
}
}

程序名称现在显示在BtnSubmit_Click事件处理程序中,以便我根据需要启动后续表单。只需替换";MessageBox.Show(pgmName("用";GoToForm(frmName("(将示例名称值替换为您自己的名称(。

最新更新