2010-11-19 8 views
0

J'ai une vue arborescente qui affiche certaines informations. Si des informations spécifiques doivent être marquées, le nœud est coloré en rouge. L'utilisateur peut afficher une grille de données affichant toutes les informations relatives aux nœuds rouges, sur un événement de clic sur un bouton. Chaque datagridrow a une case à cocher qui peut être utilisée pour basculer l'indicateur sur le todeode, ce qui met à jour l'indicateur de base de données sql. Ce que je veux aussi faire est de changer la couleur du nœud (c'est-à-dire, le drapeau visuel), en noir. Je sais comment faire cela en utilisant la récursivité, mais l'arborescence peut croître pour contenir 100 ou 1000 nœuds, et je suis inquiet pour l'efficacité. Existe-t-il un autre moyen d'interagir avec un nœud spécifique, sans avoir à se répéter?C# treeview datagridiew interaction

Merci.

Répondre

1

En général, si votre arborescence présente des propriétés telles que Binary tree ou BST, vous pouvez réduire le temps, mais ce n'est pas le cas avec les scénarios winviews treeview la plupart du temps.

donc il n'y a pas d'autre moyen d'atteindre au nœud réel mais récursivité l'arbre. Mais vous pouvez utiliser la programmation asynchrone pour effectuer une recherche sur le thread secondaire.

+0

C'est un point .... Je le ferai sur un fil séparé. Merci. –

1

Une alternative pourrait être de stocker un GridRow pour chaque, une référence à l'TreeNode correspondant.

Ici vous avez deux options:

  1. Si vous connaissez la référence TreeNode. C'est très facile. Tout est fait.
  2. Je suppose que vous ne connaissez pas la référence TreeNode du Grid ... Dans ce cas, vous pouvez enregistrer une référence String au nœud « chemin complet ». Par exemple: /A/B/C/D

Si vous connaissez le chemin d'accès complet du nœud, vous pouvez effectuer une recherche sur l'arborescence avec efficacité. En utilisant cette alternative, votre efficacité de recherche sur le nœud sera meilleure, mais la consommation de mémoire sera plus élevée. Si vous l'appliquez, surveillez la croissance de votre mémoire, surtout si vous avez des noms très longs dans les nœuds.

Espérons que ça aide.

+0

Merci. Je pense que pour l'instant je vais essayer l'option récursive asynchrone et surveiller comment elle évolue au fur et à mesure que la TV se développe. Le vôtre est une bonne solution et j'y reviendrai si ma première option fonctionne mal. Merci encore. –