Ich verwende das Click-Ereignis auf der TreeView, um einige Sachen zu tun, wenn ein Knoten in der TreeView geklickt wird. Ich tue dies, indem Sie den Knoten erhalten, die durch den Aufruf GetNodeAt klicken Sie ist() mit den Mauskoordinaten, wie folgt aus:C# TreeView.GetNodeAt() Problem mit dem Klicken auf Bilder
private void TreeView_Click(object sender, System.EventArgs e)
{
MouseEventArgs mouseEventArgs = e as MouseEventArgs;
if (mouseEventArgs == null)
return;
// Get the node that is being clicked.
TreeNode node = this.GetNodeAt(mouseEventArgs.X, mouseEventArgs.Y);
// Do other stuff...
}
jedoch die GetNodeAt() Methode funktioniert nur, wenn der Klick auf den Knoten Etikett ist, wenn Das Knotenbild wird angeklickt und GetNodeAt() gibt null zurück. Das ist ein bisschen nervig, da der Knoten tatsächlich ausgewählt wird, wenn auf das Bild geklickt wird, aber ich kann nicht herausfinden, um welchen Knoten es sich handelt.
Hat jemand irgendwelche Vorschläge?
Aktualisiert: Ich habe einige Vorschläge, SelectedNode stattdessen zu verwenden. Ich kann es nicht, da es nach dem Klick-Ereignis ausgelöst wurde. Dies ist tatsächlich in einem Steuerelement, das TreeView erbt, und was es tut, ist feuern sein eigenes Clicked-Ereignis, aber mit den zugrunde liegenden Daten, die der TreeNode anstelle des TreeNode selbst darstellt.
Aktualisiert: Stellt sich heraus, dass jemand die GetNodeAt() -Methode in unserem Code überschrieben hatte, die dieses Verhalten einführte, was ich nicht erkannte. Daher ist die Frage null und nichtig und es gibt kein Problem mit der GetNodeAt() -Methode. Warum jemand das tun würde, bleibt ein Geheimnis. :)
Diese oder SelectedNodeChanged sollten die Ereignisse sein. Es sei denn, Sie möchten nur etwas tun, wenn Sie mit der Maus darauf klicken. Andernfalls kann der Code durch die Tastatur beschädigt werden. – Samuel
Richtig, brauchte eine Weile, um mich selbst herauszufinden, aber Treeview.AfterSelect (oder BeforeSelect) ist wahrscheinlich das, was Sie wollen, anstatt das Click-Ereignis. – Davy8
@ Samuel - BeforeSelect und AfterSelect Feuer sogar auf einer Tastatur Veranstaltung wie Pfeil nach oben. – Moose