2013-06-26 66 views
0

在C#中,我開發了一個應用程序,但是我得到了一些錯誤 我的項目form1和form2中有兩個表單。 但是當我想從Form2調用任何對象屬性時,不會顯示並調用它。我怎樣才能做到這一點?我試着做,但dıdn't發生C#使用Form2中TextBox的屬性

有Form2上的文本框,我想從Form1中

下面的代碼使用它的屬性,因爲我希望它是...

Messagebox.Show(Form2.textBox1.Text.ToString()); 
+0

您是否有Form1的實例在Form1上使用? – Jonesopolis

+0

將文本框內容作爲參數傳遞給窗體的構造函數。 –

+0

這應該不會編譯,因爲文本框不是靜態的(至少我希望它不是;它不應該是)。它也不應該公開;你應該添加一個剛剛公開文本的屬性。 – Servy

回答

1

首先,Form1真的不應該對Form2的內部控制有任何瞭解。該文本框不應該公開。相反,在Form2創建一個屬性,它暴露了你需要的信息:

public class Form2 : Form 
{ 
    private Textbox textbox1; 

    public string SomeText //TODO replace with meaningful name 
    { 
     get { return textbox1.Text; } 
    } 
} 

接下來,在某些時候你大概創建窗體的實例來證明這一點。

Form2 childForm = new Form2(); 

childForm.ShowDialog(); 

MessageBox.Show(childForm.SomeText); 

在您可能還需要的Form2實例存儲爲Form1實例字段,而不僅僅是一個局部變量的一些情況:

private Form2 childForm = new Form2(); 

private void SomeMethod() 
{ 
    childForm.Show(); 
} 

private void SomeOtherMethod() 
{ 
    MessageBox.Show(childForm.SomeText); 
} 
+0

感謝您的幫助,它工作正常,您幫我了 –

0

試試看你能通過實例訪問屬性 表格1

public string _parameter; 
    public Form1() 
    { 
     InitializeComponent(); 

    } 

    public void form2_show_click(object sender, EventArgs e) 
    { 
     form2 frm = new form2(); 
     frm.ShowDialog(); 
     _parameter = frm.parameter; 
    } 

    form2 

    public string parameter; 
    public void form1_show_click(object sender, EventArgs e) 
    { 
     parameter = textBox1.Text; 
     this.DialogResult = System.Windows.Forms.DialogResult.OK; 
    }