2009-09-22 34 views
13

特定のノードを無効にして、ユーザーが選択できないようにするにはどうすればよいですか。ユーザーのためにそれを隠すことも有効です。TreeNodeエディタでノードを無効またはグレーアウトします

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

C#Visual Studio 2005 TreeNodeエディタを使用します。

答えて

23

TreeNodeにはEnabledというプロパティがありません。したがって、その状態をトラッキングする方法を見つける必要があります。これを行う1つの方法は、TreeNodeを継承し、Enabledプロパティを持つ新しいクラスを作成することです。別の方法は、無効なツリーノードのリストを維持することです。

これが完了すると、TreeNodeForeColorプロパティを使用して、淡色表示にすることができます(たとえば、SystemColors.GrayTextの値を使用)。

最後にあなたはそれが特定のノードを選択するようにユーザーのためにOKだかどうかを評価し、そのノードが無効になっている場合は、それを選択防ぐために、そのイベントにイベント引数のCancelプロパティを使用するBeforeSelectイベントを使用することができます。

private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e) 
{ 
    e.Cancel = !NodeIsEnabled(e.Node); 
} 
0

つのオプション:

  1. は、オンザフライでのノードを追加し、削除します。
  2. 所有者がクリックを描画して処理し、別のノードに送信します。
7

無効なトリリーンを扱う別の方法が見つかりました。あなたが使用したくないtreenodesを灰色にした場合は、色を尋ねることができ、灰色のノードをすべて許可することはできません。 yourNode.SelectAction = TreeNodeSelectAction.None

によって無効ノードを設定

private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e) 
    { 
     if(SystemColors.GrayText==e.Node.ForeColor) 
      e.Cancel = true; 
    } 
-2

私はあなたにも、このノード yourNode.PopulateOnDemand = false

+1

TreeNodeSelectActionはSystem.Web.UI.WebControls名前空間にある拡張無効に必要があると思います。質問はWindowsフォームについてです。乾杯 – liquide

関連する問題