如何修复此错误-C#CS0123:No重载for“;方法”;匹配委托';EventHandler';
我正在尝试将程序名从窗体传递到按钮单击事件。但我一直收到以下错误消息: “方法”没有重载与委托“EventHandler”匹配” 我在这里读过类似的问题,并尝试过许多建议,但似乎没有任何东西能解决我的具体问题。我希望有人能告诉我哪里出了问题。以下是我读过的一些帖子: 我似乎不清楚如何匹配我的事件方法的签名。我读过的文档没有帮助。任何有知识的人的帮助都将不胜感激 我的代码如下:如何修复此错误-C#CS0123:No重载for“;方法”;匹配委托';EventHandler';,c#,C#,我正在尝试将程序名从窗体传递到按钮单击事件。但我一直收到以下错误消息: “方法”没有重载与委托“EventHandler”匹配” 我在这里读过类似的问题,并尝试过许多建议,但似乎没有任何东西能解决我的具体问题。我希望有人能告诉我哪里出了问题。以下是我读过的一些帖子: 我似乎不清楚如何匹配我的事件方法的签名。我读过的文档没有帮助。任何有知识的人的帮助都将不胜感激 我的代码如下: using System; using System.Windows.Forms; namespace Pro
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);
}
}
}
}
我想问题就在这里
Click += (sender, EventArgs) => { BtnSubmit_Click(sender, EventArgs, pgmName); };
因为
EventArgs
是来自系统
命名空间的类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
}
}
}
}
使用系统;
使用System.Windows.Forms;
名称空间编程
{
公共部分类frmLogin:表单
{
私有字符串pgmName;sender,EventArgs
有两个参数,而BtnSubmit\u Click
有三个参数。此分配无效。请将pgmName存储在某个私有变量中,并在按钮单击中直接使用,而不是尝试将参数传递给它。只需声明它:private string pgmName=“”;
然后在构造函数中设置它:this.pgmName=pgmName;
您的消息框只会引用它:MessageBox.Show(pgmName);
我们不在问题中添加答案。只需在提供的框中发布答案。请参阅