步骤1:创建窗体2(Form2)
在Form2中:
-
添加一个
TextBox控件(命名为textBox1) -
将它的
Modifiers属性设置为Public或Internal(这样窗体1才能访问它)
cs
// Form2.cs
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
}
设计器中:
-
选中
textBox1 -
在属性窗口中找到
Modifiers -
将其改为
Public
步骤2:在窗体1中调用
假设窗体1中有一个按钮 button1,点击后打开Form2并写入文本。
cs
// Form1.cs
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// 创建窗体2的实例
Form2 form2 = new Form2();
// 先显示窗体2
form2.Show();
// 向窗体2中的TextBox写入字符串
form2.textBox1.Text = "hello";
}
}
完整代码(无需修改Modifiers的另一种方式)
如果你不想把TextBox设为Public,可以在Form2中写一个公共方法:
cs
// Form2.cs
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
// 公共方法,供其他窗体调用
public void SetTextBoxText(string text)
{
textBox1.Text = text;
}
}
然后在Form1中调用:
cs
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.Show();
form2.SetTextBoxText("hello");
}
如果Form2已经打开,想向它已存在的实例写入数据
如果Form2已经打开,需要在Form1中保存对它的引用:
cs
// Form1.cs
public partial class Form1 : Form
{
private Form2 form2; // 保存引用
private void buttonOpenForm2_Click(object sender, EventArgs e)
{
if (form2 == null || form2.IsDisposed)
{
form2 = new Form2();
form2.Show();
}
else
{
form2.Focus();
}
}
private void buttonWriteHello_Click(object sender, EventArgs e)
{
if (form2 != null && !form2.IsDisposed)
{
form2.SetTextBoxText("hello");
}
else
{
MessageBox.Show("请先打开窗体2");
}
}
}