Je travaille avec un contrôle .NET Treeview (pas WPF, mais régulièrement des winforms) et j'ai des problèmes avec l'événement de clic droit (ou tout événement de clic) non tir lorsque le contrôle n'a pas de nœuds à l'intérieur de celui-ci. Selon la réponse à another thread sur Stackoverflow, mon code de gestionnaire d'événements est la suivante:.NET Treeview n'envoie pas l'événement click sur le contrôle vide
private void tvTest_MouseClick(object sender, MouseEventArgs e)
{
// Note: this block below is needed so that the menu appears on
// the correct node when right-clicking.
if (e.Button == MouseButtons.Right)
{
tvTest.SelectedNode = tvTest.GetNodeAt(e.X, e.Y);
if (tvTest.SelectedNode != null)
{
tvTestContextMenuStrip.Show(tvTest, e.Location);
}
else
{
tvTestContextMenuStrip.Show(tvTest, tvTest.Location);
}
}
}
Le problème vient que si cela fonctionne bien lorsque les nœuds sont présents, si le contrôle est vide, je ne peux pas droite cliquez sur le contrôle et choisissez "ajouter un noeud" pour l'ajouter à la racine. Le gestionnaire n'est pas entré AT ALL, car j'ai placé un point d'arrêt juste au début, et il semble que la méthode n'est jamais entrée.
Est-ce que quelqu'un sait comment faire "quelque chose" quand l'arborescence est vide?
Utilisez-vous un menu contextuel pour ajouter des nœuds? Est-ce ce que vous vous attendez à faire apparaître lorsque l'arbre ne contient aucun noeud? – Bernard
Cela fonctionne très bien s'il y a un nœud, et non si l'arborescence contient des nœuds zéro. Donc, le menu est bien, c'est l'événement MouseClick qui ne fonctionne pas pour moi. –
Le contrôle 'TreeView' est fait spécifiquement pour gérer' TreeNode's. Essayez de placer/montrer un contrôle "fantôme" sur l'arborescence quand il ne contient aucun nœud. – Vercas