houssem eddine ayari Ответов: 2

Событие onclick с treeview C#


Здравствуйте, у меня есть treeview, который содержит много узлов.
Я хочу, чтобы onclik на любом узле всплывало меню.
Я сделал это событие по щелчку мыши, и меню отображается, но всегда сверху слева, а не на выбранном узле.

Что я уже пробовал:

<pre lang="c#">radMenuImporter.Click += new EventHandler(MenuItem_Importer_Click);
            radMenuAfficher.Click += new EventHandler(MenuItem_Afficher_Click);
            radMenuEditer.Click += new EventHandler(MenuItem_Editer_Click);

2 Ответов

Рейтинг:
18

OriginalGriff

У TreeView нет события щелчка для узлов, у него есть только одно для всего TreeView.
Вместо этого используйте TreeView элемент.Событие AfterSelect (System.Окна.Формы) | Microsoft Docs[^] для чего он и существует!


BillWoodruff

ОП, похоже, использует Telerik RadTreeView !

WinForm TreeView имеет NodemouseClick ... смотреть ниже... :)

Рейтинг:
10

BillWoodruff

@User-14814377 : если вы заплатили за дорогое программное обеспечение Telerik, воспользуйтесь их системой поддержки и документацией. Узнайте, предлагает ли их RadTreeView события WinForm, показанные здесь.

с WinForms я часто использую такой код с TreeView:

private TreeNode currentClkNode, currentDblClkNode;

private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
    if(treeView1.GetNodeAt(e.Location) == null)
    {
        // handle mouseclick on TreeView client area
        // that is not a click on a Node
    }
}

// thiis will be called on a Node DoubleCliick
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    currentClkNode = e.Node;
    currentDblClkNode = null;
}

private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
    currentDblClkNode = e.Node;
}