我正在使用表单添加新客户。在这种形式中,用户在组合框中选择地址(cbbAdress)。 地址组合框旁边还有一个“新”按钮,可以打开一个新表格。
frmAdres frmAdres = new frmAdres();
frmAdres.Show();
在此表单中,用户可以添加新地址。 当他们关闭表格时,组合框(cbbAdress)不会更新(显然)。 我想知道如何在主窗体更新上制作组合框(cbbAdress)?
谢谢, 托马斯
答案 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;
编辑:我是这样学习的,当然还有很多其他方法可以做到这一点。