在C#中,我开发了一个应用程序,但是我得到了一些错误 我的项目form1和form2中有两个表单。 但是当我想从Form2调用任何对象属性时,不会显示并调用它。我怎样才能做到这一点?我试着做,但dıdn't发生C#使用Form2中TextBox的属性
有Form2上的文本框,我想从Form1中
下面的代码使用它的属性,因为我希望它是...
Messagebox.Show(Form2.textBox1.Text.ToString());
在C#中,我开发了一个应用程序,但是我得到了一些错误 我的项目form1和form2中有两个表单。 但是当我想从Form2调用任何对象属性时,不会显示并调用它。我怎样才能做到这一点?我试着做,但dıdn't发生C#使用Form2中TextBox的属性
有Form2上的文本框,我想从Form1中
下面的代码使用它的属性,因为我希望它是...
Messagebox.Show(Form2.textBox1.Text.ToString());
首先,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);
}
感谢您的帮助,它工作正常,您帮我了 –
试试看你能通过实例访问属性 表格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;
}
您是否有Form1的实例在Form1上使用? – Jonesopolis
将文本框内容作为参数传递给窗体的构造函数。 –
这应该不会编译,因为文本框不是静态的(至少我希望它不是;它不应该是)。它也不应该公开;你应该添加一个刚刚公开文本的属性。 – Servy