C#“不包含带’1’参数的构造函数”

我已经阅读了本网站上有关此错误的一些post,但我仍然无法弄清楚如何做到这一点 – 我对C#很新。

我试图将多个文本框数据(只有2个开始)从Form1传递到Form3(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

作为旁注:不要将变量和类型名称命名为abForm1等。变量的目的应该通过名称本身公开。

你没有提供第二个值。 它需要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; } } 

你可以从任何forms设置(应该注明名称空间)

@ Form1中

 GlobalClass.firstNameTxtBox="This is From 1stForm"; 

@窗体2

 GlobalClass.SecondNameTxtBox="This is From Second Form"; 

make firstNameLbllastNameLbl public然后启动新表单,如下所示:

 var f3= new Form3(); f3.firstNameLbl.Text = firstNameTxtBox.Text; f3.lastNameLbl.Text = lastNametextBox.Text; f3.Show();