0

Dictionary をデータ ソースとして使用する UltraGrid があります。ディクショナリを別の (モーダル) フォームに渡して操作し、変更を親フォームのディクショナリに反映させたいと考えています。

私は辞書を子フォームに渡すことができ、喜んでおならをしますが、親フォームの辞書には変更が反映されていません。これは、子フォームの辞書パラメーターが同じオブジェクトを参照していないためだと思います。

私は本当に辞書を参照で渡したくありません。モーダル フォームには、プライベート コンストラクターとパブリック静的メソッド ShowForm() があります。私はそれにインスタンスを使用しません。誰か私に骨を投げてくれませんか?

4

1 に答える 1

0

さて、私は2つのことを行うことでこれを機能させることができました:

1) 子フォームで null ディクショナリを初期化するのではなく、子フォームに渡す前にディクショナリが初期化されていることを確認します。

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 に答える