2009-09-22 18 views
13

Jak wyłączyć określony węzeł, aby użytkownik nie mógł go wybrać. Ukrywanie go dla użytkownika jest również ważne.Wyłączyć lub wyszarzyć węzeł w edytorze TreeNode

Próbowałem właściwości Visible, ale to ukrywa całe drzewo (wszystkie węzły). Chcę tylko kilka węzłów wyłączone/ukryte.

C# przy użyciu edytora TreeNode programu Visual Studio 2005.

Odpowiedz

23

Sam w sobie nie ma żadnej właściwości Enabled, więc musisz znaleźć sposób na śledzenie tego stanu. Jednym ze sposobów, aby to zrobić, jest utworzenie nowej klasy dziedziczącej TreeNode i zawierającej własność Enabled. Innym sposobem jest utrzymanie listy wyłączonych węzłów drzewa.

Po wykonaniu tej czynności można użyć właściwości ForeColor obiektu TreeNode, aby wyglądała na wyszarzona (na przykład przy użyciu wartości SystemColors.GrayText).

Wreszcie można użyć zdarzenia BeforeSelect aby ocenić, czy jest to OK, aby użytkownik mógł wybrać konkretny węzeł i używać własność args zdarzenia Cancel w takim przypadku, aby zapobiec wybierając go, jeśli ten węzeł jest wyłączone:

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

dwie opcje:

  1. dodawanie i usuwanie węzłów w locie.
  2. Właściciel losuje i obsługuje kliknięcia i wysyła je do innego węzła.
7

Właśnie znalazłem inny sposób obsługi niepełnosprawnych treenodes. Jeśli szarzejesz w treenodach, których nie chcesz używać, możesz poprosić o kolor i nie pozwolić na wszystkie szare węzły.

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

ustawić wyłączone przez węzeł yourNode.SelectAction = TreeNodeSelectAction.None

myślę, że trzeba też wyłączyć rozbudowy tego węzła yourNode.PopulateOnDemand = false

+1

TreeNodeSelectAction jest w przestrzeni nazw System.Web.UI.WebControls. Pytanie dotyczy Windows Forms. Twoje zdrowie – liquide

Powiązane problemy