2015-05-27 4 views
0

Я пытаюсь создать собственный действующий TreeView. Когда вы нажимаете на узел, он должен переключаться как выбранный/не выбран. В настоящее время я могу выбрать узел один раз, щелкнув его, отменив выбор узла, щелкнув его снова, но я не могу снова выбрать узел, щелкнув, если не выбрать первый узел. Любая помощь будет принята с благодарностью.Treeview.SelectedNode не работает должным образом

TreeNode lastNode; 

private void treeViewMS1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) 
{ 
    if (lastNode == e.Node) 
    { 
     treeViewMS1.SelectedNode = null; 
     lastNode = null; 
    } 
    else 
    { 
     if (lastNode == null) 
     { 
      treeViewMS1.SelectedNode = e.Node; 
     } 
     lastNode = e.Node; 
    } 
} 

ответ

1

Пытайтесь с помощью процедуры BeginInvoke для задержки действия до тех пор, после того, как событие мыши выполняется обработка. Это, вероятно, мешая:

TreeNode lastNode; 
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { 
    this.BeginInvoke(new Action(() => { 
    if (lastNode == e.Node) { 
     treeView1.SelectedNode = null; 
     lastNode = null; 
    } else { 
     if (lastNode == null) { 
     treeView1.SelectedNode = e.Node; 
     } 
     lastNode = e.Node; 
    } 
    })); 
} 

Если метод действий не доступен, вы можете использовать стиль MethodInvoker:

this.BeginInvoke((MethodInvoker)delegate { 
+0

Простите меня, как я могу сделать это? –

+0

@DanGifford Как вы что? Я отправил код. – LarsTech

+0

Вау, его один из тех дней. Извините и спасибо. –

Смежные вопросы