我有一个使用 Dictionary 作为其数据源的 UltraGrid。我想将字典传递给另一个(模态)表单以进行操作,并将更改反映在父表单上的字典中。
我能够在字典中传递给子窗体,在它上面放屁让我心悦诚服,但是没有任何变化反映在父窗体上的字典中。我相信这是因为子表单上的字典参数没有引用同一个对象。
我真的不想通过 ref 传入字典。模态表单有一个私有构造函数和一个公共静态方法 ShowForm()。我没有在上面使用实例。有人可以给我扔一根骨头吗?
我有一个使用 Dictionary 作为其数据源的 UltraGrid。我想将字典传递给另一个(模态)表单以进行操作,并将更改反映在父表单上的字典中。
我能够在字典中传递给子窗体,在它上面放屁让我心悦诚服,但是没有任何变化反映在父窗体上的字典中。我相信这是因为子表单上的字典参数没有引用同一个对象。
我真的不想通过 ref 传入字典。模态表单有一个私有构造函数和一个公共静态方法 ShowForm()。我没有在上面使用实例。有人可以给我扔一根骨头吗?
好的,我可以通过做两件事来让它工作:
1)确保在将字典传递给子表单之前对其进行初始化,而不是在子表单中初始化空字典。
2)当子窗体关闭时,将字典分配回网格上的数据源。
这是显示它的父表单的代码:
private void addColorCodeLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
var assignedColorCodes =
(Dictionary<string, string>)this.subtypeColorCodesUltraGrid.DataSource;
//Initialize a null dictionary so that SubtypeColorCodeForm will reference the same dictionary.
if (assignedColorCodes == null)
assignedColorCodes = new Dictionary<string, string>();
SubtypeColorCodeForm.ShowForm(this, new ImageServerProxy(this.tbImagingUri.Text),
assignedColorCodes);
//Assign the updated dictionary back to the data source.
this.subtypeColorCodesUltraGrid.DataSource = assignedColorCodes;
}