当子表单关闭时刷新comboBox

时间:2013-04-21 22:23:23

标签: c# combobox refresh datasource

在我的父母表单中,我使用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}}

像这样试过,组合框仍然没有刷新。

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();     
    }
}