0

タブコントロールの各タブページのブール値を保存する非常に簡単な方法を考え出そうとしています。各ページにはテキストボックスがあり、bool foreach ページを保存したいので、タブページ 1 が保存されている場合は bool1 が true に設定され、そうでない場合は false に設定されます。

次に、プログラムを閉じるときに、すべてのタブページを調べて、各タブページが保存されているかどうかを確認します。検索および操作できるある種のリストを作成できる必要があります。

以前はこれにタグ プロパティを使用していましたが、何らかの理由で適切に機能しなくなりました。

どんなヘルプアドバイスも大歓迎です;yは感謝します:)

ありがとうございました、

バエル。

4

4 に答える 4

4

配列、リスト、ディクショナリのいずれも、一連のオブジェクトのブール ステータスを追跡するための適切なデータ構造ではありません。これだけを行う構造が ですHashSet<T>。aTがセットに含まれているか、含まれていないかのいずれかです。

オブジェクトがディクショナリにあるかどうか、およびある場合はその値が true か false かという2 つのDictionary<T, bool>状態を実際に維持するため、a よりも優れています。

a よりも優れているList<T>理由は 2 つあります。より高速である (ただし、この場合、ほとんど無視できることになります)。また、含まれるオブジェクトの順序に何らかの意味があることを意味するものではありません。HashSet<T>任意です。

于 2009-12-01T09:07:49.357 に答える
4

たとえば、 を使用できますDictionary<TabPage,bool>。アプリケーションの開始時:

var pageStates=new Dictionary<TabPage,bool>();

foreach(var page in tabControl.TabPages) {
    pageStates.Add(page, false);
}

TabPage の状態を変更するには:

pageStates[page]=true;

アプリケーションが終了すると、次のようになります。

foreach(var page in TabControl.TabPages) {
    if(pageStates[page]) {
        //The page is saved
    }
}
于 2009-12-01T08:55:09.117 に答える
4

List<TabPage>

保存する必要があるタブページのみを保存します。空の場合、何も保存する必要はありません。

于 2009-12-01T08:57:28.410 に答える
1

要素を削除または追加せずに反復する場合は、配列を使用します。

要素の追加と削除を繰り返す場合は、List を使用します。

文字列をキーとして使用している場合は、辞書を使用してください。

ディクショナリは、List と比較して多数の要素を使用した非常に高速なルックアップ パフォーマンスを備えています。

于 2009-12-01T09:02:45.873 に答える