2013-06-26 39 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; 
    }