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

VB.NET Discussion :

Possible? des controles vb.net publiques


Sujet :

VB.NET

  1. #1
    Membre régulier Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Points : 84
    Points
    84
    Par défaut Possible? des controles vb.net publiques
    Bonjour,
    est ce que c'est possible de remplir une zone de texte ou une listview à travers une autre page?


    Merci

  2. #2
    Membre averti Avatar de The_Big_Lebowski
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 225
    Points : 304
    Points
    304
    Par défaut
    Bien sûr, tout est possible

  3. #3
    Membre régulier Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Points : 84
    Points
    84
    Par défaut
    j'ai une page contenant une listview et des controles...
    au dessus de cette liste, j'ai mis un lien qui m'envoie vers une page pour saisir des données relatives à la liste.
    j'aimerais quand je retourne à la 1ère page trouver ma liste mise à jour.

    Remarque:j'ai fait cela mais juste en passant le curseur au dessus de la liste.

  4. #4
    Membre averti Avatar de The_Big_Lebowski
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 225
    Points : 304
    Points
    304
    Par défaut
    Il est possible de passer un paramètre dans le constructeur New() de ton winForm.

    Autrement dit:
    Tu peux appeler le form2 via le form1 en lui passant un paramètre qui te permettra d'agir sur l'ensemble des contrôles du formulaire.

  5. #5
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Oui s'ils ne sont pas déclarés private.

    Depuis ta Form2, tu peux faire Form1.TextBox1.Text = "Toto"
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  6. #6
    Membre régulier Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Points : 84
    Points
    84
    Par défaut
    comme ça;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim F_Gestion_FP As New Gestion_FP(Liste_facture)
            F_Gestion_FP.ShowDialog()
    avec liste_facture est ma listview.
    mais on me l'a souligne !

  7. #7
    Membre habitué Avatar de Razorflak
    Homme Profil pro
    Développeur Flex/AS3
    Inscrit en
    Juin 2013
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Flex/AS3
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 97
    Points : 192
    Points
    192
    Par défaut
    Citation Envoyé par _Ez3kiel Voir le message
    Oui s'ils ne sont pas déclarés private.

    Depuis ta Form2, tu peux faire Form1.TextBox1.Text = "Toto"
    Pour faire ça, il faudrait que sa textBox soit déclaré en static non? Si c'est le cas, je ne suis pas sur que se sois une bonne idée.

    Tu peut envoyé en paramètre de ta Form2 l'instance de ta Form1. Par cette instance, tu appel une méthode qui éditerait ta TextBox.

  8. #8
    Membre régulier Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Points : 84
    Points
    84
    Par défaut
    C'est bon, j'ai mis la propriété modifiers à publique. et j'ai appeler au niveau de la 2ème page comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    page1.liste_factures_P.Items.Add(lvi)
    Je vous remercie infiniment _Ez3kiel

  9. #9
    Membre régulier Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Points : 84
    Points
    84
    Par défaut
    et un grand merci The_Big_Lebowski pour l'idée.

  10. #10
    Membre averti Avatar de The_Big_Lebowski
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 225
    Points : 304
    Points
    304
    Par défaut
    C'est pas le genre de méthode que j'utilise mais ca marche.

  11. #11
    Membre régulier Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Points : 84
    Points
    84
    Par défaut
    pourriez vous The_Big_Lebowski me décrire le code qui permet de passer des parametres à une autre page?

  12. #12
    Membre averti Avatar de The_Big_Lebowski
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 225
    Points : 304
    Points
    304
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private unForm as form
        Public Sub New(ByVal form1 As Form)
            InitializeComponent()
            unForm = form1
        End Sub

  13. #13
    Membre régulier Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Points : 84
    Points
    84
    Par défaut
    ou' est le paramètre?

  14. #14
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Citation Envoyé par Razorflak Voir le message
    Pour faire ça, il faudrait que sa textBox soit déclaré en static non? Si c'est le cas, je ne suis pas sur que se sois une bonne idée.

    Tu peut envoyé en paramètre de ta Form2 l'instance de ta Form1. Par cette instance, tu appel une méthode qui éditerait ta TextBox.
    Mon message était censé être la 1ére réponse du topic, mais j'ai fais autre chose entre temps avant de l'envoyer donc il peut paraître hors-contexte.

    Par Static tu entends la version C#ienne du module ?

    Sinon le Designer VS déclare les composants friends withevents par défaut, ainsi ces controls sont accessibles entre formulaires dans la mesure où l'on reste dans le même projet.

    Mais la solution du Big Lebowski et la tienne sont également valable, on pourrait lui passer une instance par le constructeur. Mais la form étant déjà instancié autant s'en servir directement ?

    @spring.time: Ne tombe pas dans la facilité de mettre tout en public, VB.net est assez riche en propriété d'instances (private/public/friend/ withevents) et de classes (shadows, public, private, overridables, etc etc) pour avoir une code construit propre et maintenable par d'autres.
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  15. #15
    Membre habitué Avatar de Razorflak
    Homme Profil pro
    Développeur Flex/AS3
    Inscrit en
    Juin 2013
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Flex/AS3
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 97
    Points : 192
    Points
    192
    Par défaut
    Désolé, je suis en train de bossé en C# et c'est la première chose qui me sois passé par l'esprit

    Mais la form étant déjà instancié autant s'en servir directement ?
    Je n'ai pas compris le sens de cette phrase. Tu es obligé d'envoyé l'instance en paramètre pour y avoir acces, non? Sinon comment fait tu pour la récuperer et utilisé les méthode associé ou avoir acces au élément public ?

  16. #16
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Pas forcément, au sein d'un même projet si tu as 2 Forms, depuis form2 tu peux faire form1.TaTextBox ou n'importe quel autre composant posé sur ta Form1. Et pour ce qui est des méthodes ou properties tu y as accès aussi dans la mesure où elle sont soit public soit shared.
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  17. #17
    Membre habitué Avatar de Razorflak
    Homme Profil pro
    Développeur Flex/AS3
    Inscrit en
    Juin 2013
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Flex/AS3
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 97
    Points : 192
    Points
    192
    Par défaut
    Pas forcément, au sein d'un même projet si tu as 2 Forms, depuis form2 tu peux faire form1.TaTextBox ou n'importe quel autre composant posé sur ta Form1
    Je vien de voir ça et de retester, en effet autant pour moi. Comme c'est impossible en C#, se me parraissait logique qu'il en soit de mm en Vb. Je trouve ça limite sale comme possibilitée

  18. #18
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Les voies de Windows sont impénétrables.

    Après oui ça peut paraître sale mais c'est un autre débat, là on s'approprie un peu le sujet ...

    Citation Envoyé par spring.time
    ou' est le paramètre?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private unForm as form1
        Public Sub New(ByVal form1 As Form1)
            InitializeComponent()
            unForm = form1
        End Sub
    Le paramètre est form1 qui se trouve dans les parenthèses, et ensuite il est stocké dans la variable privé unForm.

    Lorsque dans ta Form1 tu initialiseras ta Form2, tu passeras Form1 en paramètre du constructeur de Form2 (New)

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Private Sub afficherForm2()
            Dim FormulaireAAfficher As Form2 = New Form2(Me) 'Vu que nous sommes dans Form1 ici, Me = Form1
     
            FormulaireAAfficher.Show()
        End Sub

    EDIT: J'ai mis en gras qlqes modifications sur le code de The_Big_Lebowski pour que tu ais une instance de Form1, sinon tu auras que les propriétés de Form de base

    EDIT2: Mais avec cette méthode, tu devras prendre en compte que tu auras une instance de Form1 d'origine qui sera affiché en fond, et une autre instance de Form1 que tu auras modifié (rajout de texte etc), tu risque de devoir réactualiser ta 1ère instance avec Form1 = unForm
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  19. #19
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par spring.time Voir le message
    j'ai une page contenant une listview et des controles...
    au dessus de cette liste, j'ai mis un lien qui m'envoie vers une page pour saisir des données relatives à la liste.
    j'aimerais quand je retourne à la 1ère page trouver ma liste mise à jour.
    Autre possibilité pour le passage d'informations entre fenêtres.
    Cela ne rentre pas dans ton souhait de visibilité direct, mais permet d'être plus indépendant au niveau programmation.

    Tu crés une classe représentant tes données.
    Tu passes une instance de cette classe (en ByRef) en paramètre du constructeur de ta fenêtre de saisie. (qui l'affecte à une propriété)
    Sur ta fenêtre de saisie, tu as un bouton valider avec sa propriété "DialogResult" a "OK".
    Sur valider tu affectes les valeurs saisies à la propriété donc à l'instance de la classe de tes données.

    Dans ta fenêtre avec la liste tu fais un "ShowDialog" avec un test si validé.
    Si oui "OK" tu mets à jour ta liste

    Cela peut sembler plus compliqué, mais en fait ta fenêtre de saisie est totalement indépendante et peut être réutilisée dans une autre partie de ton projet.
    Tu peux l'utiliser pour la création ou la modification (vu que c'est pour un ListView), il suffit d'un flag en boolean dans ta classe de données, et aprés le if du DialogResult tu testes ce flag pour ajouter ou modifier.

    Un exemple avec de l'existant. (avec en commentaire quelques indications pour ton code)
    Dans la fenêtre appelante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Sub btnHeures_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
     
                Dim DonneesJourTemp = creDonneesJourTemp(DonneDonneesDuJour(sender.tag)) ' ici tu cré l'instance de ta classe données =>dim data as ClassData = new ClassData
    ' si tu est en modif d'une ligne, tu affectes les valeurs dans data (et flag new = false)
                Dim fenCalHeures As frmSaisie = New frmSaisie(DonneesJourTemp.iuDonneesJour) 'ici tu cré la fenêtre avec son paramètre classe de données => ... = New frmSaisieLV(data)
                If fenCalHeures.ShowDialog() = Windows.Forms.DialogResult.OK Then
    'remplacer les 2 lignes suivantes par la mise à jour de ta liste. If data.new Then INS(data) Else MAJ(data) <- tes méthodes d'ajout ou de mise à jour
                    MAJDonneesJour(DonneesJourTemp)                     ' Enregistre les données dans la classe correspondant à la sélection
                    AfficheInfoCase(DonneesJourTemp, NumCaseDeSaisie)   ' affiche les données dans les contrôles de la case
                End If
     
                fenCalHeures.Close()
                fenCalHeures.Dispose()
    Dans la fenêtre de saisie
    La propriété contenant les infos provenant de la fenêtre appelante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Private mDonneesJournaliere As DTODataJour
        ''' <summary>Ensemble de données pour la journée.</summary>
        Public Property DonneesJournaliere() As DTODataJour
            Get
                Return mDonneesJournaliere
            End Get
            Set(ByVal value As DTODataJour)
                mDonneesJournaliere = value
            End Set
        End Property
    Le constructeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        ''' <summary>Constructeur principal.</summary>
        ''' <param name="LesDonneesJournaliere">L'ensemble des données journalière concernées.</param>
        Public Sub New(ByRef LesDonneesJournaliere As DTODataJour)
            InitializeComponent()
            DonneesJournaliere = LesDonneesJournaliere
            RempliControles()
            AfficheCumulTemps()
        End Sub
    La validation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Private Sub btnValider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnValider.Click
            MAJDonneesJournaliere() ' met à jour la propriété. 
            Close()
        End Sub
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  20. #20
    Membre régulier Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Points : 84
    Points
    84
    Par défaut
    je vais l'essayer plu-tard
    merci beaucoup

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

Discussions similaires

  1. empecher renommage des ID des controls asp.net
    Par mapmip dans le forum ASP.NET
    Réponses: 1
    Dernier message: 22/10/2009, 16h36
  2. [vb.net]creation des controles
    Par roxanne dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/05/2006, 17h14
  3. [VB.Net] Regrouper des controles utilisateurs
    Par Jsh dans le forum Windows Forms
    Réponses: 4
    Dernier message: 07/04/2006, 13h39
  4. [VBA-E] Est il possible de creer dynamiquement des controles en VBA
    Par bbkenny dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 13/08/2004, 20h04
  5. [VB.Net] Faire du JS sur des contrôles côté serveur
    Par TagadaTsoin dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/11/2003, 15h51

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