[英]C# “does not contain a constructor that takes '1' arguments”
我已经阅读了本网站上有关此错误的一些帖子,但我仍然无法弄清楚如何做到这一点 - 我对C#很新。
我试图从Form1到Form3传递多个文本框数据(只有2个开头)(Form2将是我工作后添加的中介)这个想法是创建几个表单,将数据传递到最后一个表单并使用标签,此刻Form3,然后Form3将一切保存到文件或数据库。 希望有道理。
所以,我的代码中有几个代码段:
在Form1上我有:
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个表格,那么Exchange可能是日期,我认为,不仅仅是将它保存在一个文件中你可以使用静态类与get / set之类的东西
让我们有一个新的类GlobalClass
public static class GlobalClass
{
public static string firstNameTxtBox
{ set; get; }
public static string SecondNameTxtBox
{ set; get; }
}
你可以从任何形式设置(应该注明名称空间)
@ Form1中
GlobalClass.firstNameTxtBox="This is From 1stForm";
@窗体2
GlobalClass.SecondNameTxtBox="This is From Second Form";
make firstNameLbl
和lastNameLbl
public然后像这样启动新表单:
var f3= new Form3();
f3.firstNameLbl.Text = firstNameTxtBox.Text;
f3.lastNameLbl.Text = lastNametextBox.Text;
f3.Show();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.