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 :

Controls : création/suppression dynamique


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut Controls : création/suppression dynamique
    Bonjour,

    Je m’adresse à vous pour un souci concernant la création et la suppression dynamiques de contrôles.

    Sur ma form, j’ai une checkbox et un panel. Quand la checkbox est cochée, je crée un textbox (jusque là pas de pb).

    Par contre, j’ai 2 pbs :
    -Si je ferme la form après création de la textbox, celle-ci n’est pas sauvegardée dans la collection de contrôles et la checkbox non-cochée.
    -Je ne parviens pas à supprimer la textbox créée dynamiquement en décochant la checkbox.

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
    Try
       Dim TxtBox As New System.Windows.Forms.TextBox
       If Me.CheckBox1.Checked Then
          TxtBox.Location = New System.Drawing.Point(1, 1)
          TxtBox.Name = "MaTextBox"
          Panel1.Controls.Add(TxtBox)
       Else
    Panel1.Controls.Remove(CType(Panel1.Controls(TxtBox.Name.ToString()), TextBox))
       End If
       Catch
     
       End Try
    End Sub
    J'ai cherché dans le forum, sans succès, pour résoudre ces soucis a priori tout simple. Si vous pouviez m'aider...
    Merci de votre aide

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim TxtBox As New System.Windows.Forms.TextBox
    cette ligne signifie qu'à chaque fois que tu passes dans la sub, tu créé un nouveau textbox
    au moment ou tu passes sur le remove, tu a fait un new sur la variable TxtBox mais celui ci est différente de celui créé précedemment, de plus il n'est pas sur le panel celui là, il est créé puis remové selon ton code

    il faut donc que tu gardes une référence sur le controle au moment de faire Add
    avoir une variable de classe par exemple


    pour le fait que la form de recoche pas à l'ouverture c'est normal, visual studio ne peut pas deviner ce que tu veux faire, c'est à toi de mettre les lignes de code pour
    il faut enregistrer dans une variable l'état de la coche et le vérifier à l'ouverture
    si en plus d'une execution à l'autre tu veux que la coche reste dans l'état, une variable de suffit plus, mais il faut enregistrer cet état quelque part (base de données, fichier, xml ...)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut
    Re,

    D'abord merci sperot51 de m'avoir répondu.

    Ensuite, sans vouloir tout te faire faire, te serait-il possible d'approfondir un peu tes explications en générale (je travaille avec une base Access) et plus particulièrement sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim TxtBox As New System.Windows.Forms.TextBox
    Sur toutes les discussions de création dynamique de controls, j'ai trouvé le New.

    Sinon, pour la sauvegarde, j'avais initialement pensé à "stocker" les infos dans les paramètres de l'appli mais pb puisque le control est créé dynamiquement.
    Merci de votre aide

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    le control est créé dynamiquement certe, mais son texte et le fait que la case est cochée, c'est enregistrable


    sinon New set à instancier un objet, que ca soit un textbox ou autre choses, meme non graphique
    voir les concepts de POO sur google (programmation orientée objet)


    je te conseille le cours suivant, très utile pour débuter
    http://plasserre.developpez.com/vsommair.htm
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut
    Re,

    je te conseille le cours suivant, très utile pour débuter
    http://plasserre.developpez.com/vsommair.htm
    J'y suis allé avant de posté... (cette page plus précisément). Le code de mon 1er post est inspiré de cette page où le New est présent.

    Mais si je pouvais avoir des infos sur la structure globale de ce que je cherche à réaliser, ça m'aiderait bcp.
    Merci de votre aide

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    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
    16
    17
    18
    Private TxtBox As System.Windows.Forms.TextBox
     
     
    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
    Try
       If Me.CheckBox1.Checked Then
          TxtBox = New System.Windows.Forms.TextBox
          TxtBox.Location = New System.Drawing.Point(1, 1)
          TxtBox.Name = "MaTextBox"
          Panel1.Controls.Add(TxtBox)
       Else
         Panel1.Controls.Remove(TxtBox )
       End If
     
       Catch
         '
       End Try
    End Sub


    As sert à dire que telle variable est de telle type mais pas qu'il y a quelque chose dans la variable
    New permet d'instancier un objet sur le modèle qu'est la classe

    dim var as new machin équivaut à
    dim var as machin
    var = new machin

    var vaut Nothing tant qu'on lui a rien mis dedans
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut
    Re,

    Merci sperot51 pour les corrections. Je continue à chercher pour le reste (un aiguillage ne serait pas de refus...).
    Merci de votre aide

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    que veux tu savoir de plus ?

    pour sauvegarder si la case est cochée, tu peux créer un setting utilisateur (pas application) de type Boolean, tu lui donnes le nom que tu veux

    au moment de l'ouverture de la fenetre, tu dis que toncheckbox.checked = my.Settings.monbooleean
    à la fermeture tu dis que my.Settings.monbooleean = toncheckbox.checked

    y a ptete un settings.save à faire, je sais pas trop
    enfin les settings et leur utilisation sont souvent sujet sur ce forum

    tu peux à la place utiliser ta base de données, et c'est le meme principe
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut
    Re,

    Merci, je continue de chercher.
    Merci de votre aide

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/11/2012, 20h40
  2. Performances : création / suppression de tables
    Par arcane dans le forum Access
    Réponses: 1
    Dernier message: 04/10/2005, 17h53
  3. Ajout/Suppression dynamique des lignes dans une table
    Par codexomega dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2005, 18h50
  4. Suppression dynamique des bases...
    Par elmagnifico dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/04/2005, 17h13

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