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 :

méthodes load et main


Sujet :

VB.NET

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 991
    Par défaut méthodes load et main
    Bonjour,

    J'aimerais déclarer une variable static mais je reçois le message suivant
    "Static n'est pas valide dans une declaration de variable membre"

    Comment puis je faire pour que la variable que je désuire declarer statique le soit

    Je ne parviens pas non plus à declarer une variable globale, au même endroit que celui où je declare les autres variables privées.

    Pouvez vous me dire comment faire.


    Merci à vous
    Pour finir, j'ai crée un moduile qui conteint une procedure sub Main() qui crée une instance de la classe que je veux charger en premier.
    Mais au lieu de cela, il y a une repetition incessante de creation d'une nouvelle instance de cette classe.

    Pouvez vous me dire comment faire pour créer cette méthode main.
    Sur le cours de MrLasserrer il est question d'une fenêtre splash; n'y a til pa plus facile car j'ai besoin d'enseigner ce concept très simplement.

    Merci beaucoup à vous.

    Cordialement.

    Nathalie

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    static est un mot clé en qui en c# équivaut à shared en vb qui est utilisé pour définir un membre
    static en vb sert au sein d'un membre et n'est pas spécialement recommandé


    quel static voulais tu ? (ou que voulais tu fais avec ?)

    sinon pour ce qui est de la portée des membres et des types de membres, le cours de lasserre est de mémoire assez explicite


    ensuite pour le démarrage de l'appli, en vb il y a 2 possibilités, démarrage par un sub main, ou démarrage sur une form
    le choix se fait dans les propriétés du projet

    si vous choisissez un démarrage sur un sub main il faut déclarer un public sub main sur un module (peut etre qu'un shared sub main sur une classe peut aller ...)

    pour faire un splash sans passer par un truc tout fait, il suffit de démarrer sur form1
    que form1 contienne un timer qui sur l'évènement tick fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim f as new form2
    f.show
    me.dispose
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 991
    Par défaut variables statique et globales
    Bonsoir et merci de ta réponse.
    En fait , par static j'entends la même signification qu'en java , c'est à dire une variable de classe qui n'est pas répétée au niveau de chaque instance.
    Sinon, est ce qu'une variable globale a la même signification qu'une variable publique en vb.net

    Merci encore de ton aide.
    Cordialement.
    Nathalie

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    dans ce cas c'est shared que tu cherches

    pour le "globale" tu veux dire globale pour qui ?

    d'ailleurs, pourquoi fais tu du vb au lieu du c#, venant de java ???
    c'est fait pour pas etre dépaysé en théorie !!
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 991
    Par défaut méthode load et main, mot clé Shared et méthode showDialog
    Bonsoir et merci de ta réponse.
    En effet, c'est bien le mot clé Shared qui convient et qui est l'équivalent, si j'ai bien compris,de static en java.
    Ma question est la suivante : j'ai constaté que si je n'utilise pas le mot clé Shared pour créer ma méthode main, cela ne fonctionne pas.
    Voici le code utilisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public Shared Sub Main
    Dim thesaurus_form1= New thesaurus_form
    thesaurus_form.ShowDialog()
    D'après ce que j'ai cru comprendre d'une explication en anglais, la méthode est statique car aucune instance de la classe thesaurus_form ne va être créée pour demarrer l'application.
    Il se trouve qu''en java, même si une méthode est statique, elle est créée en mémoire à la création de la classe, si je ne me trompe.
    Or la création d'une classe en mémoire, en java, se fait dès la première instanciation de cette classe.
    J'ai donc du mal à comprendre quel est le concept en vb.net.Pouvez vous essayer de me l'expliquer simplement car je dois le reexpliquer tout aussi simplement à un étudiant.

    Merci beaucoup à vous.

    Par ailleurs, je ne parviens toujours pas à faire la différence entre l'evènement Load et l'appel de la méthode show ou showdialog.
    En quoi consiste le fait de charger une fenêtre: de la voir à l'écran, de la créer en mémoire( ce qui est normalement le rôle de l'instruction New)ou peut être autre chose??.
    Il est vrai que dans un cas , Load est un evènement alors que showDialg est une méthode, mais est ce la seule différence??
    J'ai besoin d'y voir clair sur ce point.

    Merci beaucoup encore de votre aide car j'ai également besoin de reexpliquer cela très simplement.


    Pour finir, je ne comprends pas pourquoi lorsque j'utilise l'appel à la méthode Show, je ne parviens pas à voir à l'écran l'instance thesaurus_form1 de la classe thesaurus_form( dans mon code ci-dessus j'utlise la méthode ShowDialog() et cela fonctionne)


    Merci encore infiniment à vous de votre aide.

    Bien cordialement.

    Nathalie

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    deja ca serait bien qu'on continue le dialogue dans un seul poste, non seulement vous en avez ouvert plusieurs pour la même chose, mais en plus on est obligé de se répondre un peu sur les deux

    sinon j'ai l'impression qu'il te manque les bases
    et venir poser des questions ici pour acquérir les bases de la POO ca va peut etre etre un peu long, d'autant plus qu'il y a surement des tas de tutoriels sur le net


    une classe est un moule, qui permet d'obtenir des instances sur ce moule
    les membres partagés (ou shared ou static) sont communs à toutes les instances, et ca pour tous les langages POO je pense
    en .net on peut y accéder grace au moule sans avoir d'instance
    à la première instanciation ou au premier appel d'un membre shared, la classe est compilée (car .net compile à la volée)
    et si ton sub main n'est pas shared, il faudrait une instance pour l'appeler !
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 991
    Par défaut méthode load et main, mot clé Shared et méthode showDialog
    Bonsoir et merci de ta réponse pour ce qui concerne une méthode Shared.

    A propos de lévènement load, d'après sa définition il se déclenche avant le premier affichage d'un contrôle.
    Pour ce qui est de la form thesaurus_form1 créée dans le main, j'ai supprimé la procédure evènementielle thesaurus_form1_load qui est executée au chargement de l'instance thesaurus_form1.
    Cela implique t il que l'evènement load est quand même declenché même si aucune procédure evènementielle est liée à cet evènement?

    Merci encore de ta réponse.

    Cordialement.

    Nathalie Harbonne

  8. #8
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    le raiseevent est appelé, .net regarde alors quelles sub ont besoins d'etre rappelées
    s'il n'y en a aucune d'abonné bah personne n'est appelé ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 991
    Par défaut méthode load et main
    Bonsoir et merci de votre réponse,


    Donc si j'ai bien compris, l'evènement load est declenché sur la fenêtre en cours, mais du fait qu'il n'y a aucun code associé, aucune procédure evènementielle n'est executée à la suite .

    Pouvez vous me le confirmer.

    Par ailleurs, convcernant ce 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
    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
     
    Dim objDS As DataSet
    Dim objDA As SqlDataAdapter
    Dim StrSQLThesaurus1 as String
    Dim lvi As ListViewItem
    Dim ligne_table_termes_objDS As DataRow
    Dim strConnString as String
    Dim objConn as SqlConnection
     
            strConnString = "Initial Catalog =THESAURUS_BTS_IG2;Integrated        security = SSPI"
            objConn = New SqlConnection(strConnString)
            objDS = Nothing
     
     
     
            StrSQLThesaurus1 = "SELECT ID_TERME,LIB_TERME from TERMES;"
     
            objConn.Open()
     
     
            'on ajoute la table THESAURUS_objDS au data adapter objDA
            objDA = New SqlDataAdapter(StrSQLThesaurus1, objConn)
     
            objDS = New DataSet
     
            objDA.Fill(objDS, "THESAURUS_objDS")
     
            objConn.Close()
     
     
     
     
            'la classe ListView possède une collection appelée Items .
     
            'Grace à une boucle FOR EACH on ajoute à la collection  Items   de List_view_termes un nouveau listviewitem dont la propriété text est le contenu du  champ LIB_TERME ( en fait de la ligne 'ligne_table_termes_objDS' de la table THESAURUS_objDS sur laquelle on pointe 
                   For Each ligne_table_termes_objDS In objDS.Tables("THESAURUS_objDS").Rows
     
     lvi = List_view_termes.Items.Add(Convert.ToString(ligne_table_termes_objDS("LIB_TERME")))
               With lvi
                    .ForeColor() = Color.Indigo
                    '.Tag = CType(ligne_table_thesaurus_objDS2("ID_THES"), Integer)
                    .Tag = ligne_table_termes_objDS("ID_TERME")
                    .Font = New Font("Helvetica", 10)
                End With
     
     
            Next
     
     
     
                'L'instruction ci-dessus fait deux choses:
                '1-elle ajoute à la collection Items de la classe List_view_termes un nouveau listviewitem dont la propriété text est le contenu du champ LIB_TERME de l'enregistrement (apellée'ligne_table_thesaurus_objDS)de la table THESAURUS_objDS sur laquelle on pointe (en cours)
                '2- elle affecte à la variable lvi de type structuré 'listview item' l'ADRESSE du listviewitem que l'on vient d'ajouter à la collection Items 
     
     
            Next
    Ma question est la suivante : pouvez vous confirmer que l'interprétation du code est bien correcte, notamment au niveau de l'ajout d'un listviewitem à la collection Items par le biais de la méthode Add

    Pouvez vous m'expliquer pourquoi, du fait que lvi pointe sur le listviewitem en cours, on peut voir ce listviewitem à l'ecran au niveau de la listview en cours
    Peut être n'est ce pas la raison pour laquelle on peut voir ce libellé à l'écran ; si c'est le cas, pouvez vous me dire comment l'expliquer .


    Pour finir, Pouvez vous me dire si par le biais de la méthode Add on peut affecter une autre propriété que la propriété Text du listviewitem en cours, au lieu de passer par ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With lvi
                    .ForeColor() = Color.Indigo
                                   .Tag = ligne_table_termes_objDS("ID_TERME")
                    .Font = New Font("Helvetica", 10)
    .

    Merci infiniment de votre aide dont j'ai besoin.
    Bien cordialement.

    Nathalie

  10. #10
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    Citation Envoyé par harbonne Voir le message
    Donc si j'ai bien compris, l'evènement load est declenché sur la fenêtre en cours, mais du fait qu'il n'y a aucun code associé, aucune procédure evènementielle n'est executée à la suite .
    Pouvez vous me le confirmer.
    c'est ce que j'ai dit oui


    Citation Envoyé par harbonne Voir le message
    Par ailleurs, concernant ce code
    (...)
    Ma question est la suivante : pouvez vous confirmer que l'interprétation du code est bien correcte, notamment au niveau de l'ajout d'un listviewitem à la collection Items par le biais de la méthode Add

    Pouvez vous m'expliquer pourquoi, du fait que lvi pointe sur le listviewitem en cours, on peut voir ce listviewitem à l'ecran au niveau de la listview en cours
    Peut être n'est ce pas la raison pour laquelle on peut voir ce libellé à l'écran ; si c'est le cas, pouvez vous me dire comment l'expliquer .
    rien compris
    List_view_termes est j'imagine le nom du listview posé sur le form
    List_view_termes.items.add ajoute un élément à au listview, donc il apparait tout de suite à l'écran
    en plus .add retourne l'élément ajouté, et vous le mettez dans une variable locale et vous le réutilisez ensuite


    Citation Envoyé par harbonne Voir le message
    Pour finir, Pouvez vous me dire si par le biais de la méthode Add on peut affecter une autre propriété que la propriété Text du listviewitem en cours, au lieu de passer par ce code
    With lvi
    .ForeColor() = Color.Indigo
    .Tag = ligne_table_termes_objDS("ID_TERME")
    .Font = New Font("Helvetica", 10)
    l'intellisense et le menu déroulant qui s'ouvre quand vous tapez au clavier, vous propose différentes choses possibles et vous explique quels sont les paramètres etc...
    si vous trouvez un .add qui permet de choisir la couleur du texte alors oui (il n'y en a pas je vous rassure, mais dans l'absolu, vous pourriez rajouter cette fonctionnalité !)


    donc il suffit de bien comprendre ce que dit l'intellisense pour avancer (ca donne les type de données, des descriptions, le type de retour pour les fonctions
    et faire f1 sur un mot explique ce que ca fait, et on peut avoir la descriptions complète de toutes les classes

    si vous ne l'avez pas lu : http://plasserre.developpez.com/vsommair.htm
    c'est la bible, à lire avant de commencer en théorie ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 991
    Par défaut méthodes add , load et main
    Bonsoir et merci beaucoup encore de ton aide.

    Comme tu le dis, List_view_term est la listview de la form nommée liste_termes
    Tu dis que par le biais de la méthode add on ajoute un item
    Oui, en effet, par le biais de la méthode add, on ajoute un element à la List_view_termes.

    Puis je préciser qu'on ajoute un élément à la collection Items de la list_view_termes et que cet element est de type listviewitem.

    Du fait qu'on ajoute un élement à list_view_termes,on le voit automatiquement à l'écran sinon, pour quoi l'ajouter...

    Tu me dis que la méthode add retourne le listviewitem ajoute, c'est donc une fonction et pas une méthode
    Une fois cet element retourné, la variable lvi peut pointer dessus pour modifier ses propriétés.
    Je suppose que , comme en java, ce qui est retourné c'est l'adresse de l'élement listviewitem en cours et c'est ce qui est transmis à la variable lvi qui pointe alors dessus.

    Par ailleurs, quel type de texte est concerné par la propriété ForeColor d'une listeview; je conçois qu'on utlise cette propriété pour un listviewitem, mais au niveau de la listview elle même , à quoi peut s'appliquer cette propriété.

    Sinon, ecrire MyBase.load revient il à ecrire Me.Load; pour ma part, j'ai essayé avec Me.Load mais cela ne fonctionne pas.

    S'il est vrai que MyBase.load revient à ecrire Me.Load, comment puis je faire pour qu'en écrivant Me.load, il n'y ait pas d'erreur du compilateur .

    Pour finir, je ne comprends toujours pas pourquoi, quand ,dans la méthode Main j'utilise l'appel à la méthode ShowDialog() je parviens à visulaiser la form thesaurus_form1 et à la charger, alors qu'avec l'appel à la méthode show, cela ne fonctionne pas.

    Dernière chose: lorsqu'on dit qu'avec l'évènement load on charge une fenêtre, le verbe charger signifie t-il simplement donner la possibilité de la voir à l'écran pour la première fois, ce qui justifie que cete evènement ne se produit que quand la fenête apparaît pour la première fois à l'écran


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Shared Main()
     
    thesaurus_form1= New thesaurus_form
    thesaurus_form1.ShowDialog()
     
    End Sub
    Pour ce qui est de la bible de Mr Lasserre, elle est à côté de moi, dans un document relié.
    Je la lis quand j'ai besoin d'une explication, mais parfois, j'éprouve le besoin d'en savoir un peu plus.
    Ceci dit, je suis loin de l'avoir lue en entier...penses tu qu'il est necessaire de la lire en entier avant de commencer ou de s'y referer quand on en a besoin uniquement?

    Merci encore beaucoup de tes explications et de ton aide précieuse.

    Bien cordialement.
    Nathalie

  12. #12
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    je ne vois pas énormément de question dans ce que tu dis enfin surtout par rapport au pavé

    donc j'ai créé un nouveau projet pour tester ce qui te perturbe depuis 3 jours
    et ce qu'il te manque à ton shared sub main c'est un run
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     Public Shared Sub main()
            Dim f As New Form1
            System.Windows.Forms.Application.Run(f)
     
        End Sub
    d'ailleurs je l'avais supposé ici :
    http://www.developpez.net/forums/d74...n/#post4311804



    pour le handles mybase.load
    quand on double clic sur la fenetre en mode design, ca écrit le code avec handles mybase.load
    mais quand on passe par les menus déroulant en haut coté code, ca écrit handles me.load ... et ca fonctionne ...




    penses tu qu'il est necessaire de la lire en entier avant de commencer ou de s'y referer quand on en a besoin uniquement?
    penses tu qu'il faille lire le code de la route au fur et à mesure qu'on rencontre des panneaux ???

    à quoi ca sert de ne pas le lire à part venir poser des questions ici dont les réponses sont toutes écrites !!

    si tu avais lu ca et un bout de msdn, tu éviterais de poser des questions comme

    Je suppose que , comme en java, ce qui est retourné c'est l'adresse de l'élement



    mais parfois, j'éprouve le besoin d'en savoir un peu plus
    si y a des gens qu'en savent plus, c'est à mon avis qu'ils ont lu des tutos ...


    le cours de lasserre, je l'ai lu pendant une semaine 8h par jour avant de commencer à taper du code .net

    on crois que ca fait perdre du temps mais c'est l'inverse
    en "bouquinant" on apprend que le run cité plus haut permet de lancer une boucle d'écoute de message windows, sans laquelle la fenetre cesse de fonctionner immédiatement, et que le showdialog fonctionne parcqu'il ouvre la fenetre en modale
    alors que ca fait plusieurs jours que tu buttes sur la meme chose, que tu n'avances pas, que tu manques de certitudes sur l'effet du code, alors que c'est essentiel !
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. utiliser une variable d'une méthode dans le main
    Par yacin87 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 26/03/2010, 10h54
  2. Utiliser la méthode .load
    Par kahoerre dans le forum Excel
    Réponses: 7
    Dernier message: 11/03/2010, 18h22
  3. la méthode load() de QTranslator
    Par maroua_mm dans le forum Qt
    Réponses: 3
    Dernier message: 17/02/2010, 12h20
  4. appel de la méthode load
    Par new_wave dans le forum VB.NET
    Réponses: 1
    Dernier message: 17/05/2009, 21h43

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