Hot pour valider les modifications pour un TreeView lors de l'édition d'un nœud (C #)?

StackOverflow https://stackoverflow.com/questions/72556

  •  09-06-2019
  •  | 
  •  

Question

Je joue avec le contrôle TreeView de Microsoft et j'essaie de forcer une mise à jour des données lors de l'édition du libellé d'un nœud, similaire à UpdateData pour une grille.

En gros, dans mon éditeur, j'ai un bouton Enregistrer et ce contrôle TreeView: ce que je veux, c'est quand je modifie l'étiquette d'un nœud dans TreeView, si je clique sur le bouton Enregistrer, je veux pouvoir valider le nœud. étiquette que je montais.

Était-ce utile?

La solution

La modification de l'étiquette du nœud est effectuée avec une zone de texte. Lorsque cette zone de texte perd son focus, le changement de nom est validé en tant que nouvelle étiquette du nœud. Donc, si le bouton "Enregistrer" sur lequel vous cliquez prend le focus, la mise à jour sera automatiquement effectuée 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 n'avez pas de méthode / propriété, vous pouvez appeler pour demander la modification de l'étiquette afin d'avoir deux choix. Si l'arborescence a le focus, placez-le ailleurs. Vous pouvez également activer / désactiver l’édition des étiquettes ...

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

Autres conseils

J'accepte la réponse même si elle n'est pas vraiment documentée: existe-t-il ou non une telle méthode? En fait, vous n'avez pas répondu à cette question, vous m'avez simplement renvoyé la question.

Entre-temps, nous avons trouvé la même solution bidon avec forcer le focus sur un autre contrôle (pas très élégant, mais cela fonctionne), même si c'est un peu plus difficile pour moi puisque j'utilise TreeView dans le cadre d'un UserControl.

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

vous pouvez écouter la fin de la modification du noeud - par exemple, en écoutant "& return; return". clé dans l'événement KeyDown de la TreeView. si vous éditez quelque chose (découvrez avec SelectedNode.IsEditing), alors vous savez que vous avez un commit. Vous pouvez ensuite valider cela dans vos données dataupdate. Si vous voulez pouvoir éditer de nombreux nœuds différents et les enregistrer tous à la fin, vous devez ajouter chaque nœud modifié à une collection quelconque, puis lorsque vous cliquez sur votre bouton de sauvegarde, effectuez une itération dans cette collection.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top