IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] A l'aide! comment faire pour modifier un noeud?


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut [C#] A l'aide! comment faire pour modifier un noeud?
    Bonsoir, je suis perdu là, j'essaie de modifier le noeud dans un treeview (arbre) dans l'évenement afterlabeledit, seulement il n'y a rien à faire quand j'essaie d'ajouter un string dans le nouveau texte donné par l'utilisateur le string n'est pas pris en compte, seulement le texte entré par l'utilisateur quand il renomme le noeud...

    .NET possède beaucoup de bugs...

    IRNBRU

  2. #2
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut
    je contaste autre chose, si l'utilisateur se met en mode edition du noeud mais ne change pas le texte et valide quand meme, là mon string apparait.

    mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    		private void ScenarioTree_AfterLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e)
    		{
     
    			ScenarioTree.SelectedNode.Text="ok";
    			return;
    }
    mon but est de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    		private void ScenarioTree_AfterLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e)
    		{
     
    			ScenarioTree.SelectedNode.Text=e.Label +"ok";
    			return;
    }
    je comprends rien cela doit bugger

  3. #3
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    déjà quelle version de .Net utilises-tu ?

    Ensuite je ne comprends pas très bien, donc je vais essayer de reformuler :

    Ton utilisateur édite un noeud en cliquant 2 fois dessus.
    Il entre la chaine "A".
    Toi dans l'évennement afterEdit, tu veux mettre "B" dans le même noeud (à la place de "A").
    donc dans ce même évennement, tu vas modifier le e.Node.Text en lui mettant "B".
    Et malgré ca, ca affiche toujours "A"

    C'est bien ca ?

  4. #4
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut
    En gros oui

    au départ le texte du noeud est

    "1- xxxxxx"

    quand l'utilisateur modifie le noeud, le texte doit être

    "xxxxxxx"

    supposons que l'utilisateur tape

    "yyyyyy"

    A la fin de la modification on doit avoir

    "1- yyyyyy"

    Il faut que j'ajoute "1- " au début du texte du noeud, c'est mon but, mais le noeud ne fait qu'afficher "yyyyyy"

    merci

    ps je pense que e.Label ecrase tout texte dans le noeud à la fin de l'évenement grrrrr.



    IRNBRU
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    private void treeView1_AfterLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e) {
      e.Node.Text = e.Label + "hahaha";
    }

  5. #5
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    Alors je n'ai pas de solution directe à ton problème.

    Mais quelques suggestions :

    * Soit le fait que tu mettes "1-" devant ce que doit éditer l'utilisateur est du ressort purement technique, et l'utilisateur n'est pas censé être au courant de ce numéro

    =>Alors dans ce cas, stocke ce numéro dans la propriété Tag du NodeItem.

    * Soit ce numéro a un sens pour l'utilisateur (qui doit donc absolument le voir pour pouvoir utiliser correctement ton logiciel)
    Dans ce cas 2 solutions
    - soit tu utilises .Net 2.0 et tu peux surcharger la fonction DrawItem, auquel cas tu dessines le texte du noeud en rajoutant "1-" devant, mais le noeud ne contient pas ce préfixe.
    - soit tu utilises une version inférieur de .Net et je ne peux que te conseiller d'essayer en mettant des Application.DoEvents un peu partout pour forcer l'update du treeview, mais je ne suis pas convaincu que ca va marcher.

  6. #6
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut
    http://www.codeproject.com/cs/miscct...dLabelEdit.asp j'ai trouvé cet article mais c'est lourd commen procédure, étonnant que très peu de gens ont remarqué cet énorme bug!

    Merci pour ces sols, je vais trouver éventuellement..

    IRNBRU

  7. #7
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    essayes ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            private void treeView1_AfterLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e)
            {
                e.CancelEdit = true;
                e.Node.Text = "2-xxxx";
            }

  8. #8
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    Par contre, je n'arrives pas à réaliser le début, c'est à dire

    au départ le texte du noeud est

    "1- xxxxxx"

    quand l'utilisateur modifie le noeud, le texte doit être

    "xxxxxxx"

  9. #9
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut
    Wow Harry, j'ai pensé à cette idée je pense que cette astuce doit faire partie des FAQ.

    mon code est avec l'ajout de e.CancelEdit=true;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    string AncienTexte=e.Label;
    //We canceled the fucker !
    e.CancelEdit=true;
     
    // We get the scenario number from its tag and adds it with stored text
    e.Node.Text= (NodeTag.GetScenario()+1) + " - " + AncienTexte;
    return;
    merci encore
    IRNBRU

  10. #10
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    et pour le BeforeLabelEdit() tu fais comment ?

  11. #11
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    private void mnuRenommer_Click(object sender, System.EventArgs e)
    {
    	TreeNode NoeudSel = ScenarioTree.SelectedNode;
     
    	NoeudTag NodeTag=new NoeudTag(ScenarioTree.SelectedNode.Tag.ToString());
     
    	Scenario SelScen= (Scenario)GererXml.ListScenarios[NodeTag.GetScenario()];
     
    		NoeudSel.Text=SelScen.Nom;
     
    		NoeudSel.BeginEdit();
     
    		}
    avant de faire beginedit je récupère la partie xxxxxxxx provennant d'un arraylist et le noeud "1 - xxxxxxx" va afficher "xxxxxxx" seulement

    cheeeerio

    IRNBRU

  12. #12
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    ok d'accord, ca marche parceque tu appelles d'un evennement extèrne.

    Moi je cherche à gérer tout dans le BeforeLabelEdit().

    C'est à dire faire un machin comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            private void treeView1_BeforeLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e)
            {
                e.Node.Text = "xxxxxxxx";            
            }
    Mais ca ne marche pas, ca affiche toujours 1-xxxxxxx au moment de l'édition

    et là j'ai beau triturer dans tous les sens, y'a pas moyen !

  13. #13
    Membre confirmé
    Avatar de irnbru
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2004
    Messages : 316
    Points : 500
    Points
    500
    Billets dans le blog
    1
    Par défaut
    Ah well faut pas trop se casser la tête en tout cas y a des bugs illogiques, vivement 2.0, à moins que d'autres bugs arrivent ou les anciens restent présents?? arf faut que j'apprenne à personnaliser les composants un jour!

    IRNBRU

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/05/2009, 14h48
  2. Comment faire pour modifier une JTable
    Par jlenoir dans le forum Composants
    Réponses: 5
    Dernier message: 12/02/2007, 12h50
  3. Réponses: 4
    Dernier message: 05/01/2006, 09h01
  4. Comment faire pour modifier une ligne dans une DBGrid?
    Par Nico62 dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2005, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo