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 :

2 forms et une classe


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Par défaut 2 forms et une classe
    Bonjour ou plutôt bonsoir !!

    Voila mon problème, je dois développer une application en VB.NET qui existe deja, en gros il y a une classe, une form qui existe deja avec plein de composant graphique.

    Mon objectif est de crée une seconde form à partir de la premiere grace à un bouton. Alors cette partie est plutot facil, j'ai pas eux de souci pour la faire. Le plus dure est que la seconde form est un gestionnaire d'alarme (un tableau avec toutes les alarmes qui ont étés activés dans le form1). Alors j'ai décidé de crée une classe alarme a par qui permet de créer des objets alarme1, alarme2, etc... car les alarmes ont plusieurs propriétés qui varie d'une alarme à l'autre.

    Jusqu'ici tous va bien mais le souci est que les caractéristiques de mes alarmes activés, je dois les importés dans mon tableau et je sais pas comment faire, du moins j'ai des idées mais je sais pas si elle marcheront.

    Deja une fois que ma classe alarme fini, je sais pas si je peux crée créer mes objet alarme dans le form2, si c'est le cas, alors sa sera facile d'intégrer les caractéristique de chaque alarme dans mon tabeau sinon si je devais créer mes objets dans la classe alarme, comment je fais pour que les caratéristiques soient globale pour d'autre classe ou d'autre form ?

    Un form est une class en gros si j'ai bien compri, comment je peux créer des objets d'une classe dans une autre classe sachant que l'hitage de classe ne marche pas trop ici, du moins je crois car c'est pas des classe qui se ressemble.

  2. #2
    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
    Par défaut
    Bonjour,

    Dans ton bouton tu remplis ta classe et tu la passes en paramètre à ta 2éme fenêtre.
    Dans Form1 sur le clic bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            ' remplir classe alarme
            ' ... MaClasseAlarme.propritété = valeur
            Dim f As form2 = New form2(MaClasseAlarme)
            f.Show()
    Dans Form2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Dim clsAlarme As ClassAlarme
     
        Public Sub New()
            InitializeComponent()
        End Sub
     
        Public Sub New(ByVal LaclassAlarme As ClassAlarme)
            InitializeComponent()
            clsAlarme = LaClassAlarme
        End Sub
     
        Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    '        TextBox1.text = clsAlarme.propriété
    '...
    [Edit]
    Mais il faudrait nous donner un peu plus de précision sur
    Citation Envoyé par dragondumond Voir le message
    je sais pas si je peux crée créer mes objet alarme dans le form2
    Comment représenteras tu tes objets?

    On peux créer des controles dynamiquement sur Form2. (textbox, label, ...)

    A+, Hervé.
    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.

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Par défaut
    Si je crée une classe Alarme, avec des propriété comme Nom, Niveau de priorité, Description, etc.... ensuite je pourrais créer mes objets alarmes:

    ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim alarme1 As New Alarme
    alarme1.Nom = "Détection de fuite"
    alarme1.NiveauDePriorité = 1
    alarme1.Description = "Détection de fuite sur le réservoir 1"
    Mais ces objets doivent être en temps réel donc au lieu de les créer la classe alarme dans le bouton, je devrai plutôt la mettre dans mon timer de form1 mais ma question est si je met ma classe alarme dans mon timer de mon form1, comment je fais pour retrouver les informations de mes objets alarmes dans le form2 et ou je dois créer mes objets alarmes ?


    Dans mon form2, c'est plutôt un tableau que je vais créer au lieu de label et texbox car ensuite je dois géré mes alarmes qui ont était activé et qui devront s’afficher dans un tableau dynamique sur le form2 !!

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Par défaut
    Vous pouvez aussi m'expliquer a quoi servent les Private Sub et Public Sub dans form2 svp !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Sub New()
            InitializeComponent()
        End Sub
     
        Public Sub New(ByVal LaclassAlarme As ClassAlarme)
            InitializeComponent()
            clsAlarme = LaClassAlarme
        End Sub

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Citation Envoyé par dragondumond Voir le message
    si je mets ma classe alarme dans mon timer de mon form1, comment je fais pour retrouver les informations de mes objets alarmes dans le form2 et ou je dois créer mes objets alarmes ?
    si tu mets des variables dans un module, elles sont accessibles par tout le monde
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Tu peux faire une property de liste d'alarmes dans ton form1, si la property est public et non WriteOnly, tu pourras la lire dans ta form2 avec form1.MaListeDalarmes


    Citation Envoyé par dragondumond Voir le message
    Vous pouvez aussi m'expliquer a quoi servent les Private Sub et Public Sub dans form2 svp !!

    http://plasserre.developpez.com/cours/vb-net/?page=poo2#LXV-F-3

    Public
    Les procédures déclarées avec le mot clé Public ont un accès public. Il n'existe aucune restriction quant à l'accessibilité des procédures publiques.

    Protected

    Dans un module de classe:
    Les procédures déclarées avec le mot clé Protected ont un accès protégé. Elles sont accessibles seulement à partir de leur propre classe ou d'une classe dérivée.

    Friend
    Les procédures déclarées avec le mot clé Friend ont un accès ami. Elles sont accessibles à partir du programme contenant leur déclaration et à partir de n'importe quel autre endroit du même assembly.

    Protected Friend
    Les procédures déclarées avec les mots clés Protected Friend ont l'union des accès ami et protégé. Elles peuvent être utilisées par du code dans le même assembly, de même que dans les classes dérivées. L'accès Protected Friend peut être spécifié uniquement pour les membres des classes.

    Private
    Les procédures déclarées avec le mot clé Private ont un accès privé. Elles ne sont accessibles qu'à partir de leur contexte de déclaration, y compris à partir des membres de types imbriqués, tels que des procédures.

    © Philippe Lasserre

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Citation Envoyé par _Ez3kiel Voir le message
    Tu peux faire une property de liste d'alarmes dans ton form1, si la property est public et non WriteOnly, tu pourras la lire dans ta form2 avec form1.MaListeDalarmes
    la liste sur form1 non, si ce n'est pas lié à form1 (la preuve on en a besoin sur form2) ca n'a rien à faire sur form1

    form1.maliste non plus, vb autorise cette écriture mais elle n'est pas recommandée surtout parce qu'elle peut ne pas fonctionner, il faut une instance déclarée dans le code
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Désolé, j'ai lu en diagonale, je croyais que la classe Alarme était une classe interne au Form1 ...
    Et oui tu as raison, c'est pas très orthodoxe Form1.MaListe, mais j'essaye de trouver des solutions autres que le module, selon mon avis, le module est le dernier des derniers recours, au début c'est un sac à malices, et puis ça devient une énorme bétonneuse qui sert à boucher les trous et dont on devient trop dépendant. D'où mon réflexe de dégainer des property dans ce genre de cas

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Citation Envoyé par _Ez3kiel Voir le message
    Désolé, j'ai lu en diagonale, je croyais que la classe Alarme était une classe interne au Form1 ...
    si c'était une classe interne à form1 elle n'aurait pas d'utilité sur form2
    si elle a une utilité ailleurs que sur form1 elle n'as pas de raison d'être dans form1

    Citation Envoyé par _Ez3kiel Voir le message
    selon mon avis, le module est le dernier des derniers recours, au début c'est un sac à malices, et puis ça devient une énorme bétonneuse qui sert à boucher les trous et dont on devient trop dépendant.
    le module n'est qu'un pas vers les classes shared, techniquement ca revient au même, à savoir exposer à tous des choses utiles à tous
    il n'y a donc aucune contre indication à son utilisation
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Par défaut
    En faite, j'ai reussi a faire ce que je voulais, j'ai crée ma classe Alarme en public dans un module et il était possible de crée les objets alarmes ou je veux, ensuite j'ai enregistrer les propriétés de mes objets dans des variables public que j'ai déclarer dans mon module et du coup j'ai réussi a afficher ses propriétés dans mon Form2.

    Merci a vous !!

    Ma solution est peu optimisé mais je suis a mon deuxième jours de stage et il me reste encore 4 mois pour apprendre a optimiser des programmes, pour l'instant, je fais avec les moyens du bord ^^

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

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    si c'était une classe interne à form1 elle n'aurait pas d'utilité sur form2
    si elle a une utilité ailleurs que sur form1 elle n'as pas de raison d'être dans form1
    Je suis tout à fait d'accord, mais ce n'est pas moi qui ai fait le modèle, j'essaye juste de proposer qqch d'adaptable au modèle existant. (Que j'ai apparemment mal interprété, désolé)

    Citation Envoyé par Pol63 Voir le message
    le module n'est qu'un pas vers les classes shared, techniquement ca revient au même, à savoir exposer à tous des choses utiles à tous
    il n'y a donc aucune contre indication à son utilisation
    C'est un choix, je préfère créer des classe publique qui contiennent les fonctions dont j'ai besoin, et créer d'autres classes publiques qui ne gèrent que les Data et héritent de classe qui contiennent les fonctions.
    Mais c'est mon choix avec ses avantages et ses défauts et aussi bien je n'ai pas la science infuse, c'est blanc bonnet et bonnet blanc.

    @dragondumond, bon courage pour la suite de ton stage.

  12. #12
    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
    Par défaut
    Citation Envoyé par dragondumond Voir le message
    ...
    ensuite j'ai enregistrer les propriétés de mes objets dans des variables public que j'ai déclarer dans mon module
    ...
    Dans ce cas il est préférable de réaliser une classe contenant une liste de tes alarmes et déclarer dans ton module une seule variable du type de cette classe
    Cette classe "MesAlarmes" par exemple contiendra une liste des alarmes.
    Soit une liste : list(of alarme)
    Soit un dictionnaire : Dictionary(Of String, alarme)
    Sur le timer tu constitues ta liste avec les alarmes activées sur le form1 puis tu les places sur le form2.

    Citation Envoyé par dragondumond Voir le message
    ...
    je suis a mon deuxième jours de stage et il me reste encore 4 mois pour apprendre a optimiser des programmes, pour l'instant, je fais avec les moyens du bord ^^
    Donc tu n'as surement pas encore abordé ce genre de chose, mais bon comme ça tu auras quelques idées.

    Tu as le cours http://plasserre.developpez.com/cours/vb-net/ qui est très intéressant.

    Bon apprentissage
    A+, Hervé
    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.

Discussions similaires

  1. Retrouver l'instance d'une Form depuis une class
    Par christo45 dans le forum VB.NET
    Réponses: 2
    Dernier message: 31/03/2009, 21h12
  2. Acces aux control d'une form depuis une classe
    Par PhilCou dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/07/2008, 09h59
  3. Instancier une form depuis une class passer en paramètre
    Par freud dans le forum Windows Forms
    Réponses: 9
    Dernier message: 07/11/2007, 15h26
  4. Réponses: 3
    Dernier message: 31/10/2006, 11h03
  5. Ouvrir une form depuis une class
    Par totoche dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/09/2006, 11h13

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