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 :

Suppression de plusieurs objets crée dynamiquement


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de eti1203656
    Homme Profil pro
    Développeur C#
    Inscrit en
    Octobre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2009
    Messages : 30
    Par défaut Suppression de plusieurs objets crée dynamiquement
    Salut
    Comme cité dans l’intitulé, j’aimerai supprimer plusieurs objets créés dynamiquement.
    J’utilise la ligne de code this.Controls.Remove(up); pour supprimer un/des objet(s) "DomainUpDown" créés dynamiquement.
    Mon problème est que cette ligne de code ne supprime que le dernier objet "DomainUpDown" créé.
    Et donc je voudrai que quand je clique sur le bouton "bt_sup" ça me supprime un par un les objets "DomainUpDown" créés précédemment.

    Est-que quelqu’un a une idée de comment faire ?

    Merci d’avance

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
     
    namespace add_objet
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            DomainUpDown up;
     
     
     
            private void bt_creation_Click(object sender, EventArgs e)
            {
     
                try
                {
                    int add = 0;
                    add = int.Parse(tb_creation.Text);
     
     
                    for (int i = 0; i < add; i++)
                    {
     
                        up = new DomainUpDown();
     
                        up.Name = "up" + i.ToString(); 
                        up.Text = i.ToString(); 
                        up.Location = new Point(20, 100 + i * 25);
                        up.Parent = this; 
     
     
                    }
                }
     
                catch (Exception error)
                {
                    tb_creation.Text = "";
                    textBox1.Text = error.Message;
                }
     
            }
     
            private void bt_sup_Click(object sender, EventArgs e)
            {
                this.Controls.Remove(up);
     
            }
        }
    }

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Il suffit de faire une boucle sur tous les élément de this.Controls et de supprimer ceux dont le nom commence par Up.

    Si tu fais une boucle avec un Remove à l'intérieur, pense à la parcourir de this.Controls.Count-1 à 0 (et non en partant de 0).

  3. #3
    Membre éclairé Avatar de eti1203656
    Homme Profil pro
    Développeur C#
    Inscrit en
    Octobre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2009
    Messages : 30
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Il suffit de faire une boucle sur tous les élément de this.Controls et de supprimer ceux dont le nom commence par Up.

    Si tu fais une boucle avec un Remove à l'intérieur, pense à la parcourir de this.Controls.Count-1 à 0 (et non en partant de 0).
    Merci pour ta réponse, sa ma permit de me mettre sur une piste. Par la suite j’ai trouvé une autre solution en passant par un tableau qui me paressait plus simple.

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    #region using
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    #endregion
     
    namespace compteur
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            int add = 0;
            DomainUpDown[] up;
            int del;
     
     
            private void bt_creation_Click(object sender, EventArgs e)
            {
                try
                {
     
                    add = int.Parse(tb_creation.Text);
     
                    up = new DomainUpDown[add];
                    del = add - 1;
     
                    for (int i = 0; i < add; i++)
                    {
     
                        up[i] = new DomainUpDown();
                        up[i].Name = "up" + i.ToString();
                        up[i].Text = i.ToString();
                        up[i].Location = new Point(20, 100 + i * 25);
                        up[i].Parent = this; 
                }
     
                catch (Exception error)
                {
                    tb_creation.Text = "";
                    textBox1.Text = error.Message;
                }
            }
     
            private void bt_sup_Click(object sender, EventArgs e)
            {
                try
                {
                    if (del != -1)
                    {
                        this.Controls.Remove(up[del]);
                        del--;
                    }
                    else
                    {
                        return;
                    }
                }
                catch (Exception error)
                {
                    tb_creation.Text = "";
                    textBox1.Text = error.Message;
                }
            }
        }
    }

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

Discussions similaires

  1. Appeler un objet crée dynamiquement par son nom
    Par gomit85 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 17/05/2008, 17h11
  2. évènements sur plusieurs boutons crées dynamiquement
    Par Mangacker dans le forum C++Builder
    Réponses: 40
    Dernier message: 01/05/2008, 18h57
  3. Objets crées dynamiquement
    Par sebstein dans le forum Windows Forms
    Réponses: 4
    Dernier message: 10/01/2008, 16h16
  4. Attribuer une feuille de style CSS à un objet crée dynamiquement
    Par Sergejack dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/10/2007, 10h23
  5. [C#2] remplir propriété d'un objet crée dynamiquement
    Par superbobo dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/07/2006, 11h12

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