如何使用来自父子项的子窗体数据和组件.?窗口窗体 MDI
本文关键字:窗体 数据 组件 MDI 窗口 何使用 父子 | 更新日期: 2023-09-27 17:56:37
我有一个表单为MDIContainer(form1)的项目,这个form1有4个子表单(form2,form3,form4,form5)。
所有数据都需要连接,我的意思是,我需要为每个表单创建一个对象,并且不会丢失该对象的数据
在 form1 中,我声明所有形式,例如:form2 frm_2 = new form2 ...
form2,form3,form4,form5 具有 DataGridViews、bindingsources 等。
有时我需要在表单之间操作数据。
例如:如何通过子窗体传递数据?但是这些数据需要始终存在
前任:。在 form2 上,事件DataGridView2_SelectionChanged我需要从数据库中获取一些数据并放入 form3 DataGridView3 中。但在 form3 上,我在 DataGridView3 上有一个方法和绑定源和数据集绑定。所以我需要访问这种方法。
我需要一个例子如何做到这一点,许多子表单以及如何在所有这些之间通信
这已经被问了很多次,并得到了足够的答案来帮助你。
(这就是为什么你得到了某人的反对票。在你问任何事情之前,你应该做一个适当的搜索!
使用您描述的设置,您可以采用以下方式:将主窗体的引用交给构造函数中的每个子窗体。保留此引用并使用它来访问主窗体,并通过其多个窗体句柄访问所有其他子窗体。
Form23 form23 = new Form23(this);
form23.Show();
在表格23中:
// a class variable:
public Form1 form1;
public Form23(Form1 form1_);
{
InitializeComponent();
form1 = form1_;
}
现在,您可以使用 form1 作为中心,并像这样引用每个同级:
form1.form22.somePublicDataFieldOrWhatever...
谢谢你的回答。
这就是我现在的做法:
在主窗体中:
public partial class Form1 : Form
{
public Form2 form2;
public Form3 form3;
public Form4 form4;
public Form5 form5;
public Form1()
{
InitializeComponent();
form2 = new Form2(this);
form3 = new Form3(this);
form4 = new Form4(this);
form5 = new Form5(this);
}
private void Form1_Load(object sender, EventArgs e)
{
form2.MdiParent = this;
form3.MdiParent = this;
form4.MdiParent = this;
form5.MdiParent = this;
form2.Show();
form3.Show();
form4.Show();
form5.Show();
}
}
然后每个子窗体都有一个对主窗体的引用,就像@Taw说的:
public partial class Form2 : Form
{
public Form1 form_1;
public Form2(Form1 form1)
{
InitializeComponent();
form_1 = form1;
}
}
现在我可以做这样的事情:
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
if(dataGridView1.Rows.Count> 1)
form_1.form2.UpdateDataGrid(Convert.ToInt16(dataGridView1.SelectedRows[0].Cells[0].Value));
}
也许它可以帮助某人...如果有人知道更好的方法,请分享。
抱歉,如果这是重复的问题,但在我的研究中我没有看到这样的东西。也许我研究得还不够。=]
感谢您@TaW考虑