Windows窗体-将对象传递到模式窗体以填充,然后传递回

Windows窗体-将对象传递到模式窗体以填充,然后传递回,windows,forms,modal-dialog,pass-by-reference,Windows,Forms,Modal Dialog,Pass By Reference,我有一个超级网格,它使用字典作为数据源。我想将字典传递给另一个(模态)表单以进行操作,并将更改反映在父表单上的字典中 我可以把字典传给子表单,在字典上放屁让我开心,但是所有的变化都没有反映在父表单的字典中。我认为这是因为子窗体上的dictionary参数没有引用相同的对象 我真的不想通过ref传入字典。模式表单有一个私有构造函数和一个公共静态方法ShowForm()。我没有在上面使用实例。谁能给我一根骨头吗 好吧,我通过做两件事来实现这一点: 1) 确保字典在传递给子窗体之前已初始化,而不是在子

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

我可以把字典传给子表单,在字典上放屁让我开心,但是所有的变化都没有反映在父表单的字典中。我认为这是因为子窗体上的dictionary参数没有引用相同的对象


我真的不想通过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;
    }
private void addColorCodeLabel\u LinkClicked(对象发送方,LinkLabelLinkClickedEventArgs e)
{
var assignedColorCodes=
(Dictionary)this.ColorCodeSultraGrid.DataSource;
//初始化空字典,以便子类型ColorCodeForm将引用同一字典。
if(assignedColorCodes==null)
assignedColorCodes=新字典();
子类型ColorCodeForm.ShowForm(这个,新的ImageServerProxy(这个.tbImageGuri.Text),
指定的颜色代码);
//将更新后的词典分配回数据源。
this.subjectColorCodeSultraGrid.DataSource=assignedColorCodes;
}

能否显示一些代码?打开儿童表单并传递字典的部分。感谢您的回复,史蒂夫。我能够让它工作,并张贴在下面的解决方案。