Je trouve le standard de windows treeview comportement le comportement de la sélection pour être assez ennuyeux. Par exemple, si vous utilisez l'Explorateur et cliquez droit sur un nœud et de frapper des Propriétés, il met en évidence le nœud et affiche la boîte de dialogue propriétés du nœud sur lequel vous avez cliqué. Mais lorsque vous revenez à la boîte de dialogue, la mise en surbrillance de noeud est le noeud sélectionné précédemment sélectionné avant que vous ne le clic droit. Je trouve cela provoque des problèmes d'utilisabilité, car je suis toujours en train de s'embrouiller si j'ai agi sur la droite du nœud.
Ainsi, dans beaucoup de nos Interfaces graphiques, nous avons changer l'arbre noeud sur un clic-droit, de sorte qu'il n'y est pas de confusion. Cela peut ne pas être le même qu'un standard iwndos application, tels que l'Explorateur (et j'ai tendance à fortement modèle de notre GUI comportement après le standard de la fenêtre des applications pour usabiltiy raisons), je crois que ce seul cas d'exception résultats dans beaucoup plus utilisable arbres.
Voici un code qui modifie la sélection au cours de la droite, cliquez sur:
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 );
}
}
}
}