1

現在、.NET Windows フォームのコントロールの以前の状態を記憶/保持するためのより良いアプローチを検討しています。

たとえば、Windows フォームには 5 つのドロップダウン リスト メニュー コントロールがあります。また、ユーザーは以前にこれらのドロップダウン メニューでいくつかの項目を選択しました。ここでやりたいことは、この WinForm が再度読み込まれると、ユーザーの以前の選択が回復され、同じままになることです。

今のところ、解決策を考えることができます。選択した各値/インデックスをテキスト ファイルまたはレジストリ キーなどに保存します。そして、From がロードされるたびにそれらを読み取ります。

しかし、問題は、このアプローチは、多数のコントロールを処理し、それらの状態を維持するのに非効率になるということです。

それで、誰かが私にいくつかの考えや提案を与えることができますか? それを達成するための最良の方法は何ですか?

編集:

MSDN でこの記事を読んだところですが、現在アドイン プロジェクトを行っているので、これは気になります。

.NET Framework をホストするアンマネージド アプリケーションでは、アプリケーション設定を使用できません。設定は、Visual Studio アドイン、C++ for Microsoft Office、Internet Explorer でのコントロール ホスティング、Microsoft Outlook アドインおよびプロジェクトなどの環境では機能しません。

4

3 に答える 3

2

アプリケーションを再起動した後、コントロールの以前の状態を維持することについて話しているのですか? その場合、たとえば構成ファイルにすべての変更を書き留める以外に選択肢はないでしょう。

異なる winform 間を移動しようとしていて、変更を保持したい場合は、コントロールの履歴を実装できます。スタックのようなデータ構造体は、次のメソッドを使用してトリックを実行する必要があります。

AddToHistory(コントロール コントロール)

RetrieveLastOpen()

于 2012-05-30T07:12:01.007 に答える
1

正確に何を保存したいかを知っている限り、次のようなsmthを使用しても問題ありません。

(foreach var child in MainForm.Children.OfType<ComboBox>)
{
    // Save properties of child into Dictionary<string, ComboBoxProperties>
}

そしてロードするためにあなたはこのようなsmthをするでしょう

(foreach var child in MainForm.Children.OfType<ComboBox>)
{
    // Load properties of child from dictionary[child.Name]
}
于 2012-05-30T08:34:25.390 に答える