ユーザーが選択できないように特定のノードを無効にするにはどうすればよいですか。ユーザーのためにそれを隠すことも有効です。
Visibleプロパティを試しましたが、ツリー全体(すべてのノード)が非表示になります。いくつかのノードを無効/非表示にしたいだけです。
Visual Studio 2005 TreeNode Editorを使用したC#。
ユーザーが選択できないように特定のノードを無効にするにはどうすればよいですか。ユーザーのためにそれを隠すことも有効です。
Visibleプロパティを試しましたが、ツリー全体(すべてのノード)が非表示になります。いくつかのノードを無効/非表示にしたいだけです。
Visual Studio 2005 TreeNode Editorを使用したC#。
TreeNode
自体にはプロパティがないため、そのEnabled
状態を追跡する手段を見つける必要があります。これを行う 1 つの方法は、継承し、プロパティTreeNode
を備えた新しいクラスを作成することです。Enabled
もう 1 つの方法は、無効なツリー ノードのリストを維持することです。
それが完了したら、 のForeColor
プロパティを使用TreeNode
してグレー表示にすることができます (たとえば、SystemColors.GrayText
値を使用)。
最後に、BeforeSelect
イベントを使用して、ユーザーが特定のノードを選択しても問題ないかどうかを評価し、Cancel
そのイベントでイベント引数のプロパティを使用して、そのノードが無効になっている場合に選択を防ぐことができます。
private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = !NodeIsEnabled(e.Node);
}
I just found another way to handle the disabled treenodes. If you gray in the treenodes you don't want to use, you can ask for the color and not allow all grayed nodes.
private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
if(SystemColors.GrayText==e.Node.ForeColor)
e.Cancel = true;
}
2つのオプション: