关闭secundary表格后更新主表格?

时间:2012-03-27 11:02:57

标签: c# winforms combobox

我正在使用表单添加新客户。在这种形式中,用户在组合框中选择地址(cbbAdress)。 地址组合框旁边还有一个“新”按钮,可以打开一个新表格。

   frmAdres frmAdres = new frmAdres();
   frmAdres.Show();

在此表单中,用户可以添加新地址。 当他们关闭表格时,组合框(cbbAdress)不会更新(显然)。 我想知道如何在主窗体更新上制作组合框(cbbAdress)?

谢谢, 托马斯

3 个答案:

答案 0 :(得分:2)

将您的代码更改为以下类似内容:

using (frmAdres frmAdres = new frmAdres())
{
 if (frmAdres.ShowDialog() == DialogResult.OK)
 {
   //Update your address here
   Address d = frmAddress.SelectedAddress;
 }
}

显然,当单击“保存”按钮时,您需要确保在地址表单上将DialogResult设置为“确定”,并将属性添加到frmAddress表单以读取所选地址。

如果单击窗体上的close并且Dialog结果不是'OK',那么'if'块中的代码将不会被命中。

将表格放在“使用”支架中也会在它离开支架的上下文后将其处理掉,这意味着你不能忘记处理它。

答案 1 :(得分:2)

frmAdres的构造函数传递对父窗体的引用

frmAdres frmAdres = new frmAdres(this); 
frmAdres.Show(); 

形式的构造函数中

private MainForm mainForm;

public frmAfres(MainForm _mainForm) : this()
{
    this.mainForm = _mainForm;
}

(使用它来调用默认构造函数)。然后,您可以访问主窗体上具有相应访问者的任何控件。因此,对于MainForm中的ComboBox,您可能拥有构造函数

public ComboBox myCombo
{
    get { retrun this.comboBoxName; }
    set { this.comboBoxName = value; }
}

然后您可以通过

更新frmAdres课程中的此控件
mainForm.myCombo.Update();

Alternatevly,您只需从frmadres通过

更新整个父表单
this.ParentForm.Update();

这应该更新您的ComboBox。我希望这会有所帮助。

答案 2 :(得分:1)

使用Singleton创建一个Singleton :),您可以通过类共享字符串。

public class MySingleton
        {
            private static Classes.MySingleton _mInstance;

            public static Classes.MySingleton Instance
            {
                get { return _mInstance ?? (_mInstance = new Classes.MySingleton()); }
            }

            private string _cbbadress;

            /// <summary>
            /// cbbAdress.
            /// </summary>
            public string cbbadress
            {
                get { return _cbbadress; }
                set { _cbbadress = value; }
            }
        }

使用以下命令编辑字符串:

        Classes.MySingleton.Instance.cbbadress = cbbAdress.Text;
编辑:我是这样学习的,当然还有很多其他方法可以做到这一点。