簡體   English   中英

C#“不包含帶'1'參數的構造函數”

[英]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

作為旁注:不要將變量和類型名稱命名為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; }
    }

你可以從任何形式設置(應該注明名稱空間)

@ 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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM