我有一个使用Dictionary作为其数据源的UltraGrid。我想将字典传递给另一个(模态)表单以进行操作,并将更改反映在父表单的字典中。
我能够将字典传递给子表单,放在它上面让我高兴,但没有任何更改反映在父表单的字典中。我相信这是因为子窗体上的字典参数没有引用同一个对象。
我真的不想通过ref传入字典。模态形式有一个私有构造函数和一个公共静态方法ShowForm()。我没有使用它的实例。有人可以请我扔骨头吗?
答案 0 :(得分:0)
好的,我能够通过做两件事来实现这个目标:
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;
}