这可能是一个新手问题。 :)。请考虑以下情况。
- 假设我们有两个已经“加载”的窗口形式(即你们 可以看到两种形式)
- 表单1包含文本框和表单2中的“提交”按钮 包含文字标签。
- 用户可以在文本框中输入字符串,然后按提交 表格1表格2上的标签应该是 用新文本更新。
实现这一目标的最佳方法是什么?有没有正式的方法呢?我不想不必要地增加变量范围。
编辑:两个表单都属于同一个应用程序
答案 0 :(得分:3)
答案 1 :(得分:1)
对winforms中的模型视图控制器模式和数据绑定进行一些研究。
创建一个单独的控制器类,并以两种形式引用它,实现INotifyPropertyChanged
。在控制器上,有一个属性可以将更改的事件传播到表单。
答案 2 :(得分:-1)
Form1触发Form2打开。 Form2重载了构造函数,它将调用form作为参数,并提供对Form2成员的引用。这解决了通信问题。例如,我在Form1中将Label Property公开为public,并在Form2中进行了修改。
通过这种方法,您可以以不同的方式进行沟通。
<强> Download Link for Sample Project 强>
// 您的Form1
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(this);
frm.Show();
}
public string LabelText
{
get { return Lbl.Text; }
set { Lbl.Text = value; }
}
}
// 您的Form2
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private Form1 mainForm = null;
public Form2(Form callingForm)
{
mainForm = callingForm as Form1;
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
this.mainForm.LabelText = txtMessage.Text;
}
}