23

ユーザーが選択できないように特定のノードを無効にするにはどうすればよいですか。ユーザーのためにそれを隠すことも有効です。

Visibleプロパティを試しましたが、ツリー全体(すべてのノード)が非表示になります。いくつかのノードを無効/非表示にしたいだけです。

Visual Studio 2005 TreeNode Editorを使用したC#。

4

4 に答える 4

28

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);
}
于 2009-09-22T20:59:00.017 に答える
13

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;
    }
于 2011-12-22T16:58:15.300 に答える
0

2つのオプション:

  1. その場でノードを追加および削除します。
  2. 所有者はクリックを描画して処理し、それを別のノードに送信します。
于 2009-09-22T20:54:51.983 に答える