Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Как словить unCheck в TreeView


Автор: KuZyagroup 19.5.2007, 16:53
Есть  TreeView с включенной опцией  ChechBoxes
Нужно определить  Node с которого сняли выделение и снять выделение с его родителя если тот был выделенным. Событие  afterCheck ловит момент нажатия но возвращает  Root  Node. Мне нужно знать конкретный  Node с которого сняли выделение. Подскажите пожалуйста событие которым нужно ловить или как ловить  afterCheck-ом. Заранее спасибо

Автор: tol05 19.5.2007, 21:02
Что-то я не понял.

Цитата(KuZyagroup @  19.5.2007,  16:53 Найти цитируемый пост)
Мне нужно знать конкретный  Node с которого сняли выделение

ну так AfterCheck и возвращает, как я понял, ноду, на которое произошло это событие.
MSDN, TreeView.AfterCheck Event  - в примере четко написано, что "updates all the child tree nodes of a TreeNode when the user changes its checked state"

и код такой 
Код

if(e.Node.Nodes.Count > 0)
      {
         /* Calls the CheckAllChildNodes method, passing in the current 
         Checked value of the TreeNode whose checked state changed. */
         this.CheckAllChildNodes(e.Node, e.Node.Checked);
      }

если у ноды есть дочерние ноды, что-то с ними сделать.

Пишешь так
Код

TreeNode node = e.Node;

нужны дочерние по отношению к ней - значит 
Код

TreeNodeCollection childs = node.Nodes;

нужна родительская - значит
Код

TreeNode root = node.Parent;

Автор: KuZyagroup 20.5.2007, 03:03
Цитата

ну так AfterCheck и возвращает, как я понял, ноду, на которое произошло это событие.

только в том случае если ты меняешь соостояние checkbox-a на checked, в противном случае возвращается рут

Автор: tol05 20.5.2007, 11:54
Что-то не то.
сделал дерево в виде
Node0
   Node1
   Node2
       Node4
       Node5
   Node3  

обработчик
Код

private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
    {
      TreeNode node = e.Node;
    }

на строчке обработчика поставил брейкпоинт и сколько не клацал на всех нодах (check или uncheck)
все равно Debugger->Autos тупо показывает "e.Node  =  {Text=<реальная нода, на которой я кликнул>}"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)