Treeview.selectednode дает неправильное значение

У меня есть древовидная структура, в которой есть несколько дочерних элементов, и у многих из них есть предки. У меня также есть datagridview рядом с древовидной структурой. На основе выбранного узла дерева я связываю данные в Datagridview.

Я использую treeView1.SelectedNode для получения значения узла Моя проблема в том, что это выражение дает ранее выбранный узел.

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    node = e.node;
}

это дает мне правильный узел (выбранный узел). но

node = treeview1.selectednode укажите узел, который я выбрал ранее. Я хочу получить выбранный узел вне события клика (_nodemouseclick).

Как я могу это получить. Я не хочу сохранять узел в глобальной переменной, а затем использовать его.

Надеюсь, я ясно объяснил свой вопрос.

Спасибо в ожидании.


person Hardik    schedule 19.09.2012    source источник
comment
Вместо этого используйте событие AfterSelect.   -  person Hans Passant    schedule 19.09.2012
comment
Нет проблем сохранить его в глобальной переменной после того, как вы получите правильный узел. Смотри мой ответ   -  person Sami    schedule 19.09.2012


Ответы (2)


    TreeNode yourGlobalTreeNode;
    void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        yourGlobalTreeNode = e.Node;
        otherFunction();
        anOtherFunction(e.Node);
    }
    void otherFunction()
    {
        MessageBox.Show(yourGlobalTreeNode.Text);
    }
    void anOtherFunction(TreeNode tn)
    {
        MessageBox.Show(tn.Text);
    }

Другая функция означает, что вы можете использовать этот tree_node где угодно, используя два вышеуказанных метода.

person Sami    schedule 19.09.2012
comment
Приват писать не надо, это уровень защиты по умолчанию. - person Sami; 19.09.2012

Это связано с тем, что событие MouseClick возникает до изменения selectedNode. Вместо этого попробуйте использовать событие SelectedItemChanged.

    private void TreeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {

    }
person syned    schedule 19.09.2012