2010-12-13 9 views
1

ユーザーが列ヘッダーを必要な順序に移動して、ユーザーがアプリケーションにログインするたびに同じように設定を保存できるようにします。私は静的ヘッダーを持たないデータグリッドを持っています。 xmlファイルからヘッダを取得します。静的ヘッダーがないので、データグリッドにユーザー設定を保存するにはどうすればよいですか?おかげユーザー設定の保存に関する質問

答えて

2

http://msdn.microsoft.com/en-us/library/aa730869%28v=vs.80%29.aspx

に似ていますが、設定ファイルは、設定ファイルと呼ばれることを別のファイルの種類は、あります。その中で、アプリケーション全体またはユーザー単位で設定を定義することができます。あなたの設定ファイルのAppSettingsセクションに独自のファイルがあるかのように考えると、appSettingsには名前だけでなく、ユーザー(または "アプリケーション")にキーを設定します。私はこれがあなたが探しているものだと思います。

DataGridViewのレイアウトに関して多くの設定を読み込むと、パフォーマンスに影響します。ファイルシステムから設定ファイルをロードし、すべてのキー設定値を読み取り、列の順序を調整する必要があります。

EDIT:コメントに応じて、正しく設定を使用するように設計されていれば、動的列名を使用できます。それをやり遂げる方法は、列がどのように変化するかによって異なります。ローカライゼーションのもので、ソース言語とまったく同じ方法で、翻訳や部門の用語集の目的に異なる名前を付けることができます。次に、その列ソースの定数名を定義し、その名前を設定で使用します。ユーザーが既知の列のコレクションのサブセットを選択できる場合は、適切な順序で列名のコンマ区切りのリストである単一の設定を定義してみてください。それを検索するときは、リスト内の各列名をDGV内のヘッダーに一致させます。どちらか一方に表示されない列についてはインテリジェントです。最初の場所で列を設定する設定を使用し、ウィンドウを閉じたりアプリケーションを終了したりするときに名前を保存することで、列名が見つからない/余分なシナリオを作成することはできません。こうすることで、新しいアプリの最初の読み込み時にユーザーに表示される内容は、前回終了したときと同じ順序になります。再び、私は実際の列ヘッダーテキストの使用を避け、列ヘッダーテキストを変更する必要がある場合、設定が無効になり、すべてのユーザーが再設定する必要があるため、不変のIDを列に使用します - 列を並べます。最悪の場合、存在しない列名について柔軟性がない場合、アプリケーションは完全に中断します。

警告:設定ファイルはアプリケーションのインストールにローカルなので、ユーザーがアプリの複数のインスタンスを使用する場合(デスクトップ上とノートパソコン上に別々のインスタンスを使用する場合)、彼らがログインする場所では、設定ファイルは良い解決策ではありません。この場合、データベースなどの中央リポジトリにユーザーの設定を格納し、ログイン時にその設定を取得する方がよいでしょう。

+0

私は固定ヘッダーがない場合、これは動作しますか? –

+0

ありがとうございます。静的ヘッダーを作成し、実行時にコードを解析し、実際にヘッダーがあるかどうかを調べることは良い考えですか? –

+0

詳細情報が必要です。 DGVをすべての可能な列で初期化し、ユーザーが表示したくない列を削除または非表示にする必要があると思います。私はいいえと言います。実行が遅くなる(列を静的に定義しても、その列が定義されているわけではなく、デザイナー側のコードが実行されてすべての列が追加されます)。私は単純に列なしでDGVを定義して、ユーザ設定でプログラム的に列を追加します。 – KeithS

関連する問題