2017-09-28 7 views
-1

J'ai une vue arborescente, avec plusieurs nœuds. Si je clique EN DEHORS de l'arborescence, je veux que le nœud actuellement sélectionné soit désélectionné. Mais je ne trouve pas l'événement à déclencher, si je clique dans l'espace blanc, le nœud actuellement sélectionné reste sélectionnéWindows Form C# - TreeView: désélectionner l'élément lorsque vous cliquez en dehors de l'arbre

+1

si (clickedoutsidetree) treeview.selectedItem = null; utilisez l'événement click de l'objet oustide l'arbre ou quelque chose .. – rmjoia

+1

Vous fournir un extrait de code pour une réponse précise. – Sandy

+0

salut rmjoia. désolé, connaissez-vous l'événement à déclencher lorsque vous cliquez dans l'espace blanc de l'arborescence? – nlkhangit

Répondre

0

Avant de donner ma réponse, je voudrais juste vous dire que vous devriez démontrer que vous avez essayé et moins donner un exemple pour reproduire le problème, dans votre cas, le code pour ajouter une arborescence dans le formulaire. Aucune de ces choses n'a été faite! De toute façon, voici une solution possible. Si cela ne fonctionne pas pour vous, cela signifie que vous devez jouer avec les événements et choisissez celui de votre cas

public Form1() 
{ 
    InitializeComponent(); 

    treeView1.Nodes.Add("a"); 
    treeView1.Nodes.Add("b"); 
    treeView1.Nodes.Add("c"); 

    treeView1.LostFocus += (s, e) => ((TreeView)s).SelectedNode = null; 
} 
1

le plus approprié pour une raison quelconque <citation needed>MouseClick ne fonctionnera pas en cliquant sur une partie vide d'une TreeView contrôle. Mais Mouseown fait:

private void treeView1_MouseDown(object sender, MouseEventArgs e) 
{ 
    var hit = treeView1.HitTest(e.X, e.Y); 

    if (hit.Node == null) 
    { 
     treeView1.SelectedNode = null; 
    } 
} 

Si vous voulez aussi de désélectionner lorsque le TreeView desserre Focus vous pouvez coder un événement approprié:

private void treeView1_Leave(object sender, EventArgs e) 
{ 
    treeView1.SelectedNode = null; 
} 

Mise à jour

Comme par MSDNGotFocus et LostFocus doit être évitée pour les événements Enter et Leave:

Les événements GotFocus et LostFocus sont des événements de discussion de bas niveau qui sont liées aux messages WM_KILLFOCUS et WM_SETFOCUS Windows. En règle générale, les événements GotFocus et LostFocus sont uniquement utilisés lors de la mise à jour UICues ou lors de l'écriture de contrôles personnalisés. À la place, les événements Entrée et Sortie doivent être utilisés pour tous les contrôles à l'exception de la classe Form qui utilise les événements Activé et Désactivé. Pour plus d'informations sur les événements GotFocus et LostFocus , consultez les rubriques WM_KILLFOCUS et WM_KILLFOCUS .

Notez que par défaut HideSelection est, donc lorsque la TreeView désélectionné la sélection est cachée, mais toujours valide.

+1

Laissez, * jamais * LostFocus. –