2008-09-16 6 views
1

Je joue avec le contrôle TreeView de Microsoft et j'essaye de forcer une mise à jour des données en modifiant l'étiquette d'un nœud, similaire à UpdateData pour une grille. Fondamentalement, dans mon éditeur, j'ai un bouton Enregistrer et ce contrôle TreeView: ce que je veux, c'est quand je suis en train d'éditer l'étiquette d'un nœud dans TreeView, si je clique sur le bouton Enregistrer, je veux pouvoir valider le l'étiquette du noeud que je éditais.Chaud de valider les modifications pour un TreeView lors de l'édition d'un nœud (C#)?

Répondre

0

La modification d'étiquette de noeud est effectuée avec une zone de texte et lorsque cette zone de texte perd le focus, le changement de nom est validé en tant que nouvelle étiquette pour le noeud. Donc, si le bouton 'Sauvegarder' que vous cliquez sur prend le focus, alors la mise à jour sera automatique car la zone de texte perdra le focus. Si le bouton "Enregistrer" ne prend pas le focus, vous devez gérer un événement de clic pour le bouton "Enregistrer" et demander à l'arborescence de mettre fin à toute modification d'étiquette en cours. Si vous ne disposez pas d'une méthode/propriété que vous pouvez appeler pour demander la fin de l'édition de l'étiquette, vous avez deux choix. Si l'arborescence a le focus, placez le focus ailleurs. Sinon, éteindre tour/sur l'étiquette à nouveau l'édition ...

treeView.LabelEdit = false; 
treeView.LabelEdit = true; 
0

Je vais accepter la réponse même si elle est pas vraiment documenté: at-il ou elle n'a pas une telle méthode? En fait, vous n'avez pas répondu à cette question, je viens de me la renvoyer.

Pendant ce temps, j'ai trouvé la même solution hack-ish avec d'autres contrôles (pas très élégants mais fonctionnels), même si c'est un peu plus difficile pour moi car j'utilise un TreeView dans un UserControl.

0

Avez-vous vraiment besoin d'un bouton de sauvegarde?

vous pouvez écouter la fin de l'édition du nœud - par exemple en écoutant la touche "return" dans l'événement KeyDown de TreeView. Si vous éditez quelque chose (découvrez avec SelectedNode.IsEditing) alors vous savez que vous avez un commit. Vous pouvez ensuite valider ceci dans vos données dataupdate. Si vous souhaitez pouvoir éditer plusieurs nœuds différents et les sauvegarder tous à la fin, vous devez ajouter chaque nœud édité à une collection quelconque, puis lorsque vous cliquez sur votre bouton de sauvegarde, vous parcourez cette collection.

Questions connexes