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