C#“不包含采用'1'参数的构造函数”
本文关键字:参数 构造函数 不包含采用 包含采 | 更新日期: 2023-09-27 18:37:05
我已经通读了这个网站上一些与此错误相关的帖子,但我仍然无法弄清楚如何做到这一点 - 我对 C# 很陌生。
我正在尝试将多个文本框数据(开始时只有 2 个)从 Form1 传递到 Form3(Form2 将是我完成这项工作后添加的中介)这个想法是创建几个表单,将数据传递到最后一个表单并使用标签显示,目前是 Form3,然后 Form3 会将所有内容保存到文件或数据库中。希望这是有道理的。
所以,这是我代码中的几个片段:
在表格 1 上,我有:
public Form1()
{
InitializeComponent();
}
private void nextBtn_Click(object sender, EventArgs e)
{
Form3 a = new Form3(firstNameTxtBox.Text);
a.Show();
Form3 b = new Form3(lastNametextBox.Text);
b.Show();
this.Hide();
}
在 Form3 上,我有:
public partial class Form3 : Form
{
public Form3(string a, string b)
{
InitializeComponent();
firstNameLbl.Text = a;
lastNameLbl.Text = b;
}
}
现在,如果我取出字符串 b,它工作正常,那么请问我做错了什么?
这里
Form3 a = new Form3(firstNameTxtBox.Text);
您正在使用一个参数调用 Form3
构造函数。
正如错误所解释的那样,Form3
不包含接受单个参数的构造函数。这就是为什么当您从构造函数中删除第二个参数时,错误会消失。
您有两种选择:
1) 删除第二个构造函数参数。
public Form3(string a)
{
InitializeComponent();
firstNameLbl.Text = a;
}
2) 将第二个参数添加到调用 Form3
构造函数的所有位置。
如果您需要第二个构造函数参数,我建议选项 2。
例如:
Form3 a = new Form3(firstNameTxtBox.Text, lastNametextBox.Text);
最终的 Form1 代码如下所示:
public Form1()
{
InitializeComponent();
}
private void nextBtn_Click(object sender, EventArgs e)
{
Form3 a = new Form3(firstNameTxtBox.Text, lastNametextBox.Text);
a.Show();
this.Hide();
}
我想你的意思是这个
Form3 a = new Form3(firstNameTxtBox.Text, lastNametextBox.Text);
a.Show();
编译器说Form3
没有一个带有 1 个参数的构造器。这是真的。
public Form3(string a, string b)
这需要两个参数。因此,您必须传递两个参数。
当你说new Form3(firstNameTxtBox.Text);
你正在将参数传递给参数时string a
编译器说你也必须传递string b
。
作为旁注:不要命名变量和类型名称,如a
、b
、Form1
等,变量的目的应该通过名称本身公开。
您没有提供第二个值。它需要 2 个参数。
Form3 a = new Form3(firstNameTxtBox.Text,lastNametextBox.Text);
正如你所说,如果你有N个形式,那么日期交换可能是,我认为,不仅仅是将其保存在文件中,您还可以使用静态类和get/set之类的东西
让我们有一个新的类全局类
public static class GlobalClass
{
public static string firstNameTxtBox
{ set; get; }
public static string SecondNameTxtBox
{ set; get; }
}
并且您可以从任何形式进行设置(应注意命名空间b)
@Form1
GlobalClass.firstNameTxtBox="This is From 1stForm";
@Form2
GlobalClass.SecondNameTxtBox="This is From Second Form";
公开firstNameLbl
和lastNameLbl
然后像这样启动新表单:
var f3= new Form3();
f3.firstNameLbl.Text = firstNameTxtBox.Text;
f3.lastNameLbl.Text = lastNametextBox.Text;
f3.Show();