0

現在使用中のwpfアプリケーションに現在アクティブなユーザーコントロールを保存しようとしていますが、その方法がわかりません。

私は現在、次のようにユーザーコントロールをwpfウィンドウグリッド(MainContent)にロードしています。

MyAccount control = new MyAccount();
MainContent.Children.Add(control);

ただし、現在のコントロールを削除して、その場所に新しいコントロールを追加できるようにする必要がありますが、現在使用中のコントロールを保存する方法がわかりません。

編集:明確にするために、後で呼び出すことができるように、コントロール名をメモリに保存したいと思いますMainContent.Children.Remove(oldcontrol)

4

2 に答える 2

2

あなたの質問にはすでに答えが含まれています - コントロールの名前をメモリに保存するだけです。関数の外側の変数名/オブジェクトに入れるだけで、コントロールを削除するときにまだ使用できるため、その変数を引き続き参照できます。

とは言っても、コントロールの名前が常に同じである場合は、変数はまったく必要ない場合があります (現在選択されている回答で暗示されているように、タイプ MyAccount のコントロールは 1 つしかないことが示されています)。コントロールにその名前を伝えるだけです:

名前付きのコントロールを追加します。

MyAccount control = new MyAccount();
control.Name = "myAccountControl";
MainContent.Children.Add(control);

名前で削除:

MainContent.Children.RemoveByKey("myAccountControl");

これは上記のコードよりも効率的であるはずです。つまり、特定のタイプのコントロールが複数ある場合、関心のあるものだけを削除することを意味します。そのタイプの最初であること)。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection.removebykey.aspx

于 2012-10-21T08:43:29.717 に答える
1

これは最もエレガントなソリューションではないと確信していますが、

        MyAccount oldControl = null;
        foreach (UserControl control in mainContent.Children)
        {
            if (control.GetType() == typeof(MyAccount))
            {
                oldControl = (MyAccount)control;
                break;
            }
        }

        mainContent.Children.Remove(oldControl);
于 2012-10-21T08:11:03.760 に答える