5

我已经阅读了该站点上与此错误相关的一些帖子,但我仍然无法弄清楚如何做到这一点 - 我对 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,它可以正常工作,请问我做错了什么?

4

5 回答 5

9

这里

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();
}
于 2013-10-27T17:09:58.697 回答
3

我想你的意思是这个

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等。变量的用途应通过名称本身公开。bForm1

于 2013-10-27T17:11:07.157 回答
0

正如您所说,如果您有 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";

@Form2

GlobalClass.SecondNameTxtBox="This is From Second Form";
于 2013-10-27T17:18:02.567 回答
0

您没有提供第二个值。它需要2个参数。

Form3 a = new Form3(firstNameTxtBox.Text,lastNametextBox.Text);
于 2013-10-27T17:13:25.910 回答
0

Make firstNameLbland lastNameLblpublic 然后像这样启动新表单:

var f3= new Form3();
f3.firstNameLbl.Text = firstNameTxtBox.Text;
f3.lastNameLbl.Text = lastNametextBox.Text;
f3.Show();
于 2013-10-27T17:24:48.610 回答