0

我有一个使用 Dictionary 作为其数据源的 UltraGrid。我想将字典传递给另一个(模态)表单以进行操作,并将更改反映在父表单上的字典中。

我能够在字典中传递给子窗体,在它上面放屁让我心悦诚服,但是没有任何变化反映在父窗体上的字典中。我相信这是因为子表单上的字典参数没有引用同一个对象。

我真的不想通过 ref 传入字典。模态表单有一个私有构造函数和一个公共静态方法 ShowForm()。我没有在上面使用实例。有人可以给我扔一根骨头吗?

4

1 回答 1

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;
    }
于 2012-07-23T14:48:24.747 回答