方法'form2'的重载没有'0'参数

Wer*_*ver 0 c# visual-studio winforms

这是我对同一个问题的第二个问题,但是这个例子让我更容易理解你的答案.

我得到"没有重载方法'form2'需要'0'参数"

form1上的按钮将您带到form2,并将文本框的值带过.Form2显示标签中文本框的值.然后我在form2上有一个后退按钮,可以将你带回到form1.

我第二次使用下面的代码时得到错误:

private void button1_Click(object sender, EventArgs e)
{
    Form2 frm2 = new Form2();
    frm2.Show();
    this.Hide();
}
Run Code Online (Sandbox Code Playgroud)

以下是此示例的所有代码:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm2 = new Form2(textBox1.Text);
        frm2.Show();
        this.Hide();
    }
}

public partial class Form2 : Form
{
    public string txtbox;

    public Form2(string txtbox)
    {
        InitializeComponent();
        this.txtbox = txtbox;
    }
    private void Form2_Load(object sender, EventArgs e)
    {
        label1.Text = txtbox;
    }
    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm2 = new Form2();
        frm2.Show();
        this.Hide();
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释这个以及如何做到这一点.我还是菜鸟所以请详细说明.

Hab*_*bib 9

您没有默认构造函数Form2,您唯一可用的构造函数Form2需要一个字符串参数.

您可以在表单中定义无参数构造函数.

public partial class Form2 : Form
{
    public string txtbox;
    public Form2() // a new parameterless constructor
    {
        InitializeComponent();
    }
Run Code Online (Sandbox Code Playgroud)

另一个选项是utalize现有的构造函数,并在按钮单击事件中传递一些字符串值.

Form2 frm2 = new Form2("somestring");// can be empty string as well
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 5

对 - 你已经用参数声明了一个构造函数:

public Form2(string txtbox)
Run Code Online (Sandbox Code Playgroud)

......并且没有无参数构造函数.请注意,如果您没有显式声明任何构造函数,则编译器仅为您提供无参数构造函数.

但是你试图在没有参数的情况下调用构造函数:

Form2 frm2 = new Form2();
Run Code Online (Sandbox Code Playgroud)

想要那样做什么?你基本上已经说过,为了构造一个实例Form2,你必须txtbox参数提供一个值......但你不是这样做的.