Я использую событие click в TreeView, чтобы делать некоторые вещи, когда узел нажимается в TreeView. Я делаю это, получая узел, на который нажимают, вызывая GetNodeAt () с координатами мыши, например:
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...
}
Однако метод GetNodeAt () работает только тогда, когда щелчок находится на метке узла, когда щелкается изображение узла, тогда GetNodeAt () возвращает ноль. Это немного раздражает, так как узел фактически выбирается при нажатии на изображение, но я не могу выяснить, что это за узел.
У кого-нибудь есть предложения?
Обновлено:
Вместо этого я получил несколько предложений по использованию SelectedNode. Я не могу, так как это установлено после того, как событие Click запущено. Это на самом деле в элементе управления, который наследует TreeView и запускает собственное событие Clicked, но с базовыми данными, которые TreeNode представляет вместо самого TreeNode.
Обновлено: выясняется, что кто-то переопределил метод GetNodeAt () в нашем коде, который ввел это поведение, которое я не осознавал. Таким образом, вопрос является недействительным и нет проблем с методом GetNodeAt (). Почему кто-то сделал это, остается загадкой. :)