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 :

[VB.NET] Controles dans un GroupBox


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut [VB.NET] Controles dans un GroupBox
    Dans un form , j'ai des textbox et des label. certains sont placés dans un GroupBox.
    pour mettre le .Text ="" des controles j'ai écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Private Sub Effacer_Les_Controles()
            Dim obj as Control
            For Each obj In Controls
                If TypeOf obj Is TextBox Then
                    obj.Text = ""
                End If
            Next
        End Sub
    Ca marche pas pour les TextBox qui sont dans le GroupBox
    Merci de m'aider

  2. #2
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Salut

    Avec la recursivite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        Private Sub Effacer_Les_Controles(ByVal obj As Control)
            For Each obj In Controls
                If TypeOf obj Is TextBox Then
                    obj.Text = ""
                Else
                    If Not obj.Controls.Count = 0 Then
                        Effacer_Les_Controles(obj)
                    End If
                End If
            Next
        End Sub
    sache qu'une autre solution serait de mettre toutes les references de tes textbox dans un array de textbox: tu n'aurais pas a parcourir des controles inutiles

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Merci mais dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Effacer_Les_Controles(obj)
    (obj) est souligné et une infobulle me dit "Arguments trop nombreux pour Effacer_Les_Controles()"

    Comment mettre toutes les references des textbox dans un array de textbox ?

    Merci

  4. #4
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    regarde mieux le code que j'ai mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Private Sub Effacer_Les_Controles(ByVal obj As Control)
    La sub a change, pour mettre a "" tous les textbox d'un conteneur (ainsi que les textbox inclus dans les sous conteneurs) tu lance la sub ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Effacer_Les_Controles(LePanelOuIlyaTousLesTextBox)
    Pour mettre les references dans un array rien de plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    'a la creation des textbox
    Dim LesTextBox(15) as TextBox
    LesTextBox(0) = textbox1
    LesTextBox(1) = textbox2
    ...
     
    'pour les effacer:
    For i=0 to 15
        LesTextBox(i).Text = ""
    Next
    C'est leur reference que tu vas mettre dans l'array (LesTextBox(0) c'est textbox1, il y a juste deux manieres d'y acceder)

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Merci pour les infos.

    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Effacer_Les_Controles(ByVal obj As Control)
    j'ai une exception qui est levée

    pourtant quand j'appelle la procédure j'indique :
    "Effacer_Les_Controles(GroupBox1)"

    Cette solution me plaisait bien mais finalement je vais opter pour l'array qui est plus simple.

  6. #6
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Bon finalement je crois que je vais pas mettre mes textbox dans des GroupBox.
    La procédure (avec ta proposition de Array) les efface mais j'ai une autre procédure qui doit écrire dedans et elle ne marche plus!

  7. #7
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    fais voir un peu de code

  8. #8
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Le code quand je clic dans le datagrid (dg1). Ca marche si les textbox ne sont pas dans des groupbox

    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
        Private Sub dg1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles dg1.Click
            Effacer_Les_Controles()
            Dim r, c
            c = 15  
            r = dg1.CurrentRowIndex
            On Error Resume Next
            For Each obj In Controls
                If TypeOf obj Is TextBox Then
                    If dg1.Item(r, c) Is DBNull.Value Then
                    Else
                        obj.Text = dg1.Item(r, c)
                        If obj.Text = "<NULL>" Then
                            obj.Text = ""
                        End If
                    End If
                    c = c - 1
                End If
            Next
        End Sub
    Le code qui efface les contenu des TextBox (c'est mon code d'origine sans les modifs que tu m'as indiquées)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Sub Effacer_Les_Controles()
            'la boucle efface le text des controles TextBox uniquement
            For Each obj In Controls
                If TypeOf obj Is TextBox Then
                    obj.Text = ""
                Else
                End If
            Next
         End Sub
    Merci pour ta patience je travaille avec vb.net depuis peu de temps

  9. #9
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Avant de proposer une reponse

    Tu cherches a faire quoi avec tes textbox?

    On dirait que tu essaie de recreer le binding

    Essaie ca et dis moi si c'est ce que tu cherche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UneTextbox.DataBindings.Add("Text", icitadatagrid.datasource, "iciLeNomDuChamp")
    si c'est bien ca, va voir ce tuto
    http://dotnet.developpez.com/cours/liaisonControles/

  10. #10
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Je vais essayé d'expliquer mon projet

    C'est un petit prog de facturation clients

    Sur mon Form il y a :
    - des TextBox avec un binding lié à ma table FactureEnTete
    - un DataGrid1 lié aussi à ma table FactureEnTete
    - un DataGrid2 lié à ma table FactureDetail
    - 3 Combobox liés à ma table FichierClients (1 avec CleCli, 1 avec NumCli et 1 avec NomCli)
    - 1 MainMenu avec 2 sous-menus

    les 2 sous-menus :
    -Afficher toutes les factures. Ici j'affiche tous les entête de toutes les factures dans DataGrid1
    -Afficher les factures d'un client. Ici j'affiche dans DataGrid1 tous les entête des factures du client sélectionné dans le Combobox.

    Quand je clique sur une ligne du DataGrid1 j'affiche dans les TextBox l'entête de la facture sélectionnée et j'affiche dans DataGrid2 le détail des lignes de la facture.

    Lors de chaque sélection d'un client dans les combobox, je fais un clear du dataset FactureEntete et un clear du dataset DetailFacture, je remets tous mes TextBox à "" et je réaffiche toutes les données de la facture sélectionnée.

    Tous ça marche bien. Pour une question d'esthétique, j'aurais voulu mettre mes TextBox dans des GroupBox. Mes si je fais ça je ne peux plus les remettre à "" et je ne peux plus écrire dedans.

    Voilà c'était un peu long mais j'ai tout expliqué

    Merci encore

  11. #11
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Ok je vois le systeme

    Mais, si tes textbox sont bindes, tu n'as justement pas a changer leur valeur: un clear sur une datatable efface le contenu des textbox. Quand tu clique sur une ligne du datagrid, la textbox est mise a jour automatiquement en fonction de la bonne ligne

    Donc theoriquement tu ne devrais pas avoir a gerer ca.

  12. #12
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Bon ben merci je vais revoir ça et je reviendrai si problème

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

Discussions similaires

  1. [Débutant] Obtenir le focus d'un control dans un GroupBox
    Par devman2011 dans le forum VB.NET
    Réponses: 3
    Dernier message: 12/11/2011, 22h17
  2. je ne retrouve pas mon controle dans mon GroupBox
    Par jeandadaf dans le forum VB.NET
    Réponses: 4
    Dernier message: 08/11/2009, 11h38
  3. [VB.net] controler Excel dans une Form ?
    Par sergio_bzh dans le forum Windows Forms
    Réponses: 8
    Dernier message: 14/06/2006, 14h08
  4. [VB.NET]Gestion de radioButton dans une GroupBox
    Par Yeti_in dans le forum Windows Forms
    Réponses: 1
    Dernier message: 24/05/2006, 09h06
  5. Liés des controls dans un GroupBox ?
    Par vincthav dans le forum MFC
    Réponses: 4
    Dernier message: 18/08/2005, 17h34

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