begin process at 2012 02 10 11:57:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

Treeview et cocher noeud parent


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Treeview et cocher noeud parent

lundi 6 novembre 2006 à 11:18:23 | Treeview et cocher noeud parent

cispo

Bonjour,

J'utilise un le controle TreeView. Je me suis abonné à l'évènement AfterCheck. Mon but est de pouvoir cocher le noeud parent si tous les noeufs fils sont cochés.

J'ai écris le code suivant :

if

(node.Checked) // node est un des noeufs fils

{

bool check;

foreach (TreeNode f_nodes in node.Parent.Nodes) //On récupere le noeud parent et on parcourt tous les noeufs fils

{

if (f_nodes.Tag != node.Tag) // différents de celui concerné

{

if (f_nodes.Checked)

check = true;

else

{

check = false;

break

}

}

}

if (check)

node.Parent.Checked = true;}

Malheuresement cela ne fonctionne pas et l'application quitte sans lever d'erreur...

Quelqu'un a une idée sur la question ?

Merci d'avance !
lundi 6 novembre 2006 à 11:31:46 | Re : Treeview et cocher noeud parent

fregolo52

Membre Club
salut,

peux-tu détailler ?
dit-nous ce qu'il se passe. A priori, ton code ne devrait pas générer d'erreur, sauf dans le cas où ton noeud courant est le seul fils, donc initialise ton bool, par sécurité.
Tu as toujours le meme résultat, quelque soit les noeuds cochés ?

lundi 6 novembre 2006 à 13:15:18 | Re : Treeview et cocher noeud parent

cispo

Après avoir initialisé le booleen check à false, j'obtiens le message d'erreur suivant :
Failed to load resources from resource file. Please check your setup
lundi 6 novembre 2006 à 13:20:48 | Re : Treeview et cocher noeud parent

LUDINSKI

Réponse acceptée !
Salut

Je peux te proposer le code suivant :

// Méthode appelée lorsque l'état d'une case à cocher de la TreeView est modifié
private void treeView_AfterCheck( object sender, TreeViewEventArgs e )
{
    // Se désabonne à l'évènement
    treeView.AfterCheck -= new TreeViewEventHandler( treeView_AfterCheck );

    // Met les noeud fils puis les noeuds parents à jour (récursivement)
    UpdateChildNodes( e.Node );
    UpdateParentNodes( e.Node );

    // Se résabonne à l'évènement
    treeView.AfterCheck += new TreeViewEventHandler( treeView_AfterCheck );
}

// Met à jour les noeuds fils d'un noeud
private void UpdateChildNodes( TreeNode parentNode )
{
    // Parcourt les noeuds fils
    foreach( TreeNode childNode in parentNode.Nodes )
    {
        // L'état de la case à cocher du fils est différent de celui du père
        if( childNode.Checked != parentNode.Checked )
        {
            // Met à jour les noeuds fils du noeud en cours
            childNode.Checked = parentNode.Checked;
            UpdateChildNodes( childNode );
        }
    }
}

// Met à jour les noeuds parents d'un noeud
private void UpdateParentNodes( TreeNode childNode )
{
    // Le noeud possède un noeud parent
    if( childNode.Parent != null )
    {
        // Récupère une valeur indiquant si tout les noeuds du même niveau sont cochés
        bool allAreChecked = true;
        foreach( TreeNode node in childNode.Parent.Nodes )
        {
            if( ! node.Checked )
            {
                allAreChecked = false;
                break;
            }
        }

        // L'état de la case à cocher du noeud parent ne correspond pas à l'état de ses fils
        if( childNode.Parent.Checked != allAreChecked )
        {
            // Met à jour le noeud parent
            childNode.Parent.Checked = allAreChecked;
            UpdateParentNodes( childNode.Parent );
        }
    }
}

Satisfait ou remboursé ;)
lundi 6 novembre 2006 à 15:31:32 | Re : Treeview et cocher noeud parent

fregolo52

Membre Club
ah ah, toi aussi tu as eu ce super message : Failed to load resources from resource file. Please check your setup

Ce message est un peu l'équivalent de segmentation fault, du truc du style, sous Linux. En gros, ça plante mais on ne sait pas pourquoi.
C'est quand même bizarre qu'une erreur se produise quand tu initialises une variable !!!!
lundi 6 novembre 2006 à 19:19:55 | Re : Treeview et cocher noeud parent

cispo

Merci LUDINSKI, le code fonctionne parfaitement.

Je n'ai pas cherché, mais je suppose que l'erreur que j'obtiens vient de l'abonnement/désabonnement à l'évènement...
jeudi 9 novembre 2006 à 15:39:24 | Re : Treeview et cocher noeud parent

LUDINSKI

Ben en fait...
A chaque fois que tu modifiais la propriété Checked
, l'évènement AfterCheck était déclenché.
Donc ton programme tournait en boucle et allouait chaque fois un peu plus de mémoire...

A un moment, il n'y avait plus assez de mémoire pour pouvoir initialiser une nouvelle variable et puis paf !

Voilà ;)


Cette discussion est classée dans : check, node, parent, nodes, noeud


Répondre à ce message

Sujets en rapport avec ce message

modifier noeud fichier xml [ par jesusonline ] Voila je suis coincé et j'ai pas le temps de faire de rechercher :( alors je fais appel à vou en esperant avoir une reponse :) Voici le problème j'ai probléme sélection node dans un treeview en C# [ par rifi ] J'ai créé un TreeView avec différents nodes, monprobléme et que je souhaite sélectionner un des Nodes lorsque je clique sur un bouton. mais je n'ai t ajout de controlweb dans nodes d'un treeview [ par akira3 ] bonjour,je souhaiterai ajouter dans chacun de mes treenode des controles web(textbox,dropdownlist)j'ai entendu parler d'une propriete editlabel mais e Treeview [ par romagny13 ] Bonjour Quelquun saurait il comment parser chaque node dune treeview jusqu'au node selectionné(et ne parser que les nodes appartenant au chemin Fullpa Probleme TreeView [ par Tracid83 ] Bonjour,voila j'ai un petit problème avec la gestion de ma Treeview. J'ai rajoutés des images devant les différents ligne de ma Treeview mais lorsque  [C#]treeview node image [ par medgha ] bonjour tout le monde,je dévelope en C# sous visual studio 2005 , j'utilise dans mon application un treeview que je charge à partir d'une base de donn treeView [ par facbest ] Bonsoir, Peut on à partir d'un treeView enfant ( Noeud )ouvrir par un click un richTextBox malgré mes recherche j'ai rien trouvé ci oui! une petit selectsingleNode avec deux correspondances ? [ par Telvyn25 ] MON FICHIER XML coucou1 1 16 1 2009-08-16T00:00:00 2008-08-17T00:00:00 compteurs et données relationnelles [ par centralweb ] Bonjour, Je suis en train de me mettre à ADO.NET. Mon premier code consiste à importer dans une base Access un fichier csv Dans le csv, nous avons Concaténation des string [ par yayasam ] salut, j'ai un souci avec les string , dans un treeview j'ai une méthode récursive avec la quelle je récupère le parent( sous forme d'un string) de mo


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,529 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales