Lorsque je sélectionne un nœud dans l'arborescence, il met en surbrillance et j'affiche des données basées sur ce nœud ci-dessous. Lorsque je sélectionne un autre contrôle (l'arborescence perd le focus), il n'est plus mis en surbrillance. Comment puis-je le garder en surbrillance après avoir perdu le focus? Tout en faisant une recherche je ne peux pas dire quel noeud est sélectionné car je dois garder le focus sur la zone de texte (de sorte que l'utilisateur peut taper plus de texte).Contrôle TreeView en C#, select() et focus
8
A
Répondre
10
Vous devez définir la propriété HideSelection false - de sorte que vous verrez la sélection, barbante l'accent a perdu le contrôle TreeView
3
Je viens de lancer sur cette question et voici comment j'adressai: Changé la propriété DrawMode à TreeViewDrawMode.OwnerDrawText
et enregistré à l'événement de DrawNode
private void MyTreeGridview_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
if ((e.State == TreeNodeStates.Selected) && (!MyTreeGridview.Focused))
{
Font font = e.Node.NodeFont ?? e.Node.TreeView.Font;
Color fore = e.Node.ForeColor;
if (fore == Color.Empty)fore = e.Node.TreeView.ForeColor;
fore = SystemColors.HighlightText;
Color highlightColor = SystemColors.Highlight;
e.Graphics.FillRectangle(new SolidBrush(highlightColor), e.Bounds);
ControlPaint.DrawFocusRectangle(e.Graphics, e.Bounds, fore, highlightColor);
TextRenderer.DrawText(e.Graphics, e.Node.Text, font, e.Bounds, fore, highlightColor, TextFormatFlags.GlyphOverhangPadding);
}
else
{
e.DrawDefault = true;
}
}
0
Si la couleur de surbrillance ne suffit pas brillante à votre goût quand HideSelection est réglé sur False et la mise au point perdu TreeView:
Assurez-vous que votre T La propriété HideSelection de reeView est définie sur True (valeur par défaut).
gérer ensuite les années TreeView Entrer et laisser des événements tels que:
void myTreeView_Leave(object sender, EventArgs e)
{
if((sender as TreeView).SelectedNode != null)
(sender as System.Windows.Forms.TreeView).SelectedNode.BackColor = Color.Red; //your highlight color
}
void myTreeView_Enter(object sender, EventArgs e)
{
if((sender as TreeView).SelectedNode != null)
(sender as TreeView).SelectedNode.BackColor = (sender as TreeView).BackColor;
}
Questions connexes
- 1. Javascript focus() et select() quirk
- 2. C# RDP ActiveX Contrôle perdre le focus
- 3. Silverlight Toolkit Contrôle et évolutivité TreeView
- 4. Silverlight 3 - TreeView n'obtenant pas le focus
- 5. Remplissage d'un contrôle TreeView
- 6. treeview checkbox: comment vérifier select et vice versa
- 7. Définir le focus sur un autre contrôle après avoir cliqué sur TreeView
- 8. Set focus à un autre contrôle
- 9. Trouver contrôle ItemTemplate dans TreeView
- 10. Tableaux SQL SELECT en C#?
- 11. Contrôle TreeView dans ASP .NET
- 12. Ouverture d'un formulaire en C# sans focus
- 13. C# Force Form Focus
- 14. données XML Binding à WPF TreeView contrôle
- 15. C# treeview opérations threadsafe
- 16. Contrôle ASP.NET Treeview prenant en charge le glisser-déposer?
- 17. Iterop Forms Toolkit validation et focus événements
- 18. select perd le focus lorsque la souris est plus d'options
- 19. C# - Construction TreeView
- 20. WPFMVVM Définir le contrôle du focus
- 21. DataGridView: FullRowSelect et Focus
- 22. Dimensionnement automatique d'un contrôle TreeView ASP.NET
- 23. Forks contrôle en C
- 24. LINQ: Différence entre 'Sélectionnez c' et 'Select nouvelle (c ...'
- 25. Contrôle du navigateur simple en C#
- 26. Pouvez-vous lier des données à un contrôle TreeView?
- 27. irritant select() comportement c
- 28. ASP.NET TreeView et sélection du nœud sélectionné
- 29. Synchronisation WPF Treeview et ListBox
- 30. écrire un contrôle com en C# et l'utiliser dans MFC
je me débattais avec exactement le même problème 3 jours avant ... – bernhardrusch
Je dois ajouter qu'il ya effectivement 3 classes TreeView en C#: WinForms, ASP .NET et WPF. Seul le contrôle WinForms possède la propriété HideSelection. – wigy
Cela me laisse me demander pourquoi le designer Visual Studio assigne 'true' comme valeur par défaut de la propriété' HideSelection'. Je pense que dans la majorité des cas d'utilisation *** pas *** cacher le nœud actuellement sélectionné serait préférable. – DavidRR