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
Répondre
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;
}
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.
Laissez, * jamais * LostFocus. –
si (clickedoutsidetree) treeview.selectedItem = null; utilisez l'événement click de l'objet oustide l'arbre ou quelque chose .. – rmjoia
Vous fournir un extrait de code pour une réponse précise. – Sandy
salut rmjoia. désolé, connaissez-vous l'événement à déclencher lorsque vous cliquez dans l'espace blanc de l'arborescence? – nlkhangit