在我的父母表单中,我使用DataTable
作为DataSource
填充了使用 sourceTypes = myDataBase.SourceType.ToList<SourceTypes>();
DataTable dt = new DataTable();
DataColumn dc1 = new DataColumn("Name");
DataColumn dc2 = new DataColumn("ID");
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
foreach (SourceType sourceType in sourceTypes)
{
string sourceTypeName = sourceType.sourceTypeName;
string ID = sourceType.sourceTypeID.ToString();
dt.Rows.Add(sourceTypeName, ID);
}
comboBox3.DataSource = dt;
comboBox3.ValueMember = "ID";
comboBox3.DisplayMember = "Name";
填充项目的comboBox。
myDataBase
在我的父表单中,我正在调用我的子表单,在其中我将新记录添加到 private void FrmChild_FormClosed(object sender, FormClosedEventArgs e)
{
FrmParent.refresh();
}
,并且我希望在子表单关闭后,在父表单的表单组合框中可以看到这个新添加的记录。所以我想从我的childFrm调用类似这样的东西来刷新comboBox。
private void button7_Click(object sender, EventArgs e)
{
FrmChild frmChild = new FrmChild();
frmChild.ShowDialog();
frmChild.Dispose();
}
现在我需要父表单中的静态刷新方法,我无法真正开始工作。我怎么能完成它?干杯
编辑:儿童表格在这里打开:
private void FrmChild_FormClosed(object sender, FormClosedEventArgs e)
{
FrmParent frmParent = new FrmParent();
frmParent.refresh();
}
EDIT2:我试过这样(没有静态方法),但没有用
以我的孩子形式:
sourceTypes = myDataBase.SourceType.ToList<SourceTypes>();
DataTable dt = new DataTable();
DataColumn dc1 = new DataColumn("Name");
DataColumn dc2 = new DataColumn("ID");
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
foreach (SourceType sourceType in sourceTypes)
{
string sourceTypeName = sourceType.sourceTypeName;
string ID = sourceType.sourceTypeID.ToString();
dt.Rows.Add(sourceTypeName, ID);
}
comboBox3.DataSource = dt;
comboBox3.ValueMember = "ID";
comboBox3.DisplayMember = "Name";
在我的父窗体中,刷新方法(在将新记录添加到myDataBase之后)。
{{1}}
像这样试过,组合框仍然没有刷新。
答案 0 :(得分:0)
您可以将父表单传递给子表单并调用其方法。在您的子表单中创建一个构造函数,该构造函数接收您的父表单,并且不会使您的refresh
方法保持静态。同时尝试处理Closing
事件而不是Closed
事件。
FrmChild课程:
private FrmParent parentForm = null;
public FrmChild(FrmParent pf)
{
parentForm = pf;
}
现在,当closing
时,您可以调用刷新方法
private void FrmChild_FormClosing(object sender, FormClosingEventArgs e)
{
if(parentForm != null)
parentForm.refresh();
}
FrmParent类
private void button7_Click(object sender, EventArgs e)
{
using(FrmChild frmChild = new FrmChild(this))
{
frmChild.ShowDialog();
}
}