.Net Forms.TreeView でチェックボックスを制御するにはどうすればよいですか?
質問
UI 要素の 1 つとして TreeView を備えた .Net デスクトップ アプリケーションがあります。
その TreeView を複数選択できるようにしたいのですが、それはまったくサポートされていません。
そこで、ツリーにチェックボックスを追加しています。問題は、一部の項目のみが選択可能であり、選択できない項目は一貫してカスケード選択できないことです。
他のチェックボックスを表示しながら、一部のチェックボックスを無効にしたり非表示にしたりする方法はありますか?
解決
TreeView のデフォルトの動作は、 チェックボックス プロパティが true に設定されている場合、チェックボックスはすべての TreeNode に表示されます。
あなたが探している動作 (一部のチェックボックスを無効化または非表示にする) は、通常の動作をカスタム変更したものです。デフォルトの動作をオーバーライドする TreeView または TreeNode のカスタム実装を作成できます。もう 1 つ試してみたいのは、TreeView を使用することです。状態画像リスト 財産。詳細については、次のサイトを参照してください。
- 見る この郵便受け あなたが試みているものと同様の実装を経た MSDN フォーラムに投稿してください。
- コードプロジェクト: トライステートツリービュー
- コードプロジェクト: TreeView でカスタム ノード状態イメージを処理する方法 (例:トライステートチェックボックス)
他のヒント
最近書いたエディターでも同様の問題がありました。結局、私が使用したのは、 TreeNode
さんの BackColor
プロパティを使用してノードの選択状態を決定します。次に、 SelectionChanged
Shift/Ctrl キーの状態をチェックして、選択したノードが選択範囲に追加/削除されているか、それとも新しい選択範囲を作成しているかを判断するイベント。もありました Generic::List<>
現在選択されているノードを削除して、ツリー検索を排除します。
.NET には複数選択ツリービューがないのはなぜですか?使い方はたくさんありますが、ツリービューでチェックボックスをオンにするのはかなりひどい代替手段です。