Я считаю, что стандартное поведение выбора вида дерева окон раздражает. Например, если вы используете Проводник, щелкаете правой кнопкой мыши узел и нажимаете «Свойства», он выделяет узел и отображает диалоговое окно свойств для узла, на котором вы щелкнули. Но когда вы возвращаетесь из диалогового окна, выделенный узел был узлом, ранее выбранным / выделенным до того, как вы щелкнули правой кнопкой мыши. Я считаю, что это вызывает проблемы с юзабилити, потому что я всегда путаюсь, действовал ли я на правильном узле.
Таким образом, во многих наших графических интерфейсах мы изменяем выбранный узел дерева правой кнопкой мыши, чтобы не было путаницы. Это может не совпадать со стандартным приложением iwndos, таким как Explorer (и я склонен сильно моделировать поведение нашего графического интерфейса после стандартных оконных приложений по соображениям удобства использования), я считаю, что это единственное исключение приводит к гораздо более удобным для использования деревьям.
Вот код, который изменяет выбор при щелчке правой кнопкой мыши:
private void tree_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
// only need to change selected note during right-click - otherwise tree does
// fine by itself
if ( e.Button == MouseButtons.Right )
{
Point pt = new Point( e.X, e.Y );
tree.PointToClient( pt );
TreeNode Node = tree.GetNodeAt( pt );
if ( Node != null )
{
if ( Node.Bounds.Contains( pt ) )
{
tree.SelectedNode = Node;
ResetContextMenu();
contextMenuTree.Show( tree, pt );
}
}
}
}