2016-09-14 42 views
-1

C#的新手;多年来一直是VB.NET/VBA开发人员。我目前正在为我们的非现场工作人员提供申请。我有一个带有项目编号下拉的主交换机表格。然后用户可以打开各种基于表单的工具,以包含预算表单。在更改下拉列表时,我存储了一个程序范围的类变量cJob,它具有多个属性(客户,位置等)。在预算窗体的公开:具有唯一变量的WinForms多实例窗体

Form frm = new FieldBudgets.frmBudgets().Show(); 

我有一个私人静态cJob实例叫做meJob(new cJob)。 返回配电盘时,用户在不关闭预算的实例的情况下,可以打开选定不同项目编号的同一预算表格的其他实例。

这是我的问题(对不起,花了这么长时间才到这里): 刷新按钮可以更新预算表单上的数据,但是来自最后一个实例的新的meJob信息会被传送到另一个实例。我怎样才能保持这些独立?我认为新的meJob会坚持个人实例。另外,我确实有一个不够迷人的“解决方案”,它涉及隐藏的文本框并在刷新时重新加载新的meJob。如果这是最好的解决办法,我得到了,这样吧......

MJ

+0

您可以使您的子表单成为具有主窗体类作用域的Dictionary ,并通过单击按钮引用该键。 –

回答

-1
Dictionary<string,FieldBudgets.frmBudgets> myBudgets = new Dictionary<string,FieldBudgets.frmBudgets>(); 
myBudgets.Add("Budget1",New FieldBudgets.frmBudgets()); 
myBudgets.Add("Budget2",New FieldBudgets.frmBudgets()); 
myBudgets.Add("Budget3",New FieldBudgets.frmBudgets()); 
myBudgets.Add("Budget4",New FieldBudgets.frmBudgets()); 

myBudgets["Budget2"].Show(); 

你可以把任何独特的字段和/或属性在构造函数frmBudgets。

+0

不熟悉字典(谷歌学习),但我没有遵循这个建议。 frmBudgets上的meJob实例如何转换为Dictionary项目?为什么frmBudgets的个别实例“不记得”它的特定身份? –

+0

Dictionary是一种同时打开同一对象的多个实例并可以通过键(可以是字符串,int或任何您想要的唯一项)访问的方法。这比创建MyForm1,myForm2,myForm3等更容易。 –

+0

好的,字典的概念是有道理的。然而,如果字典在调用页面上被保存并且实现,那么不知道这与字典“页面”如何知道它是自己的内容有关。 –

相关问题