[英]How can I fix this error - C# CS0123: No overload for “method” matches delegate 'EventHandler'
我正在尝试将程序名称从我的表单传递给按钮单击事件。 但我不断收到以下错误消息:
“‘方法’没有重载匹配委托‘EventHandler’”
我在这里阅读了类似的问题并尝试了许多建议,但似乎没有任何东西可以解决我的具体问题。 我希望有人能告诉我哪里出错了。 以下是我读过的一些帖子:
“方法”没有重载匹配委托“System.EventHandler”
错误 - “方法”没有重载与委托“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 事件处理程序中,供我根据需要用于启动后续 forms。 只需替换“MessageBox.Show(pgmName);” 用“GoToForm(frmName);” (用您自己的名称替换示例名称值)。
我猜这个问题在行
Click += (sender, EventArgs) => { BtnSubmit_Click(sender, EventArgs, pgmName); };
因为EventArgs
是来自System
命名空间的 class
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.