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 :

Problème avec Sub Main


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Problème avec Sub Main
    Bonjour.

    J'ai créé une application VB.Net simplissime composée d'une Form (Form1) vide et d'un module (Module1) avec la procédure Main.
    L'objet de démarrage est paramétré sur "Sub Main".
    Lorsque je lance l'exécution, la procédure "Sub Main" est bien exécutée mais l'application se ferme immédiatement sans aucun message d'erreur alors que Form1 devrait resté affichée !
    Ci-dessous le code des deux composants:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Class Form1
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
        End Sub
    End Class
     
    Module Module1
        Public Sub Main()
            Form1.Show()
        End Sub
    End Module
    J'ai le même problème avec une grosse application convertie de VB6 en VB.Net !

    Merci pour votre aide. Cordialement; Jean.

  2. #2
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Bon désolé pour le dérangement, j'ai trouvé la réponse sur la toile.
    Contrairement à VB6, l'application se termine dès que l'objet de démarrage se termine (dès la fin de "Sub Main") ce qui rend l'utilité de "Sub Main" discutable.

    Jean.

  3. #3
    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
    l'utilité du sub main n'est pas discutable du tout, c'est juste le manque d’expérience ou d'imagination qui fait que tu ne le vois pas

    sinon pour ouvrir une fenetre depuis un sub main c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim f as new form1
    system.windows.forms.application.run(f)
    .run est bloquant
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par hexar49 Voir le message
    , l'application se termine dès que l'objet de démarrage se termine
    Jean.
    Je n'ai pas le temps de le faire, mais fais un double-clic sur l'icône du MyProject et explore un peu. Tu devrais découvrir que tu peux choisir de terminer autrement.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    l'utilité du sub main n'est pas discutable du tout, c'est juste le manque d’expérience ou d'imagination qui fait que tu ne le vois pas

    sinon pour ouvrir une fenetre depuis un sub main c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim f as new form1
    system.windows.forms.application.run(f)
    .run est bloquant
    En faisant f.ShowDialog(), ça ne fonctionne pas aussi ?
    Kropernic

  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
    si, dans les faits ca fonctionne

    enfin autant que .run lance une écoute de pompe à message ou un truc dans le genre, showdialog ouvre en modal
    pas sur que ca fasse une différence, mais j'avais cru lire que .run était recommandé (d'ailleurs visual studio fait un .run dans le code généré il me semble)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Problème Sub Main
    Merci pour toutes ces réponses.

    J'ai bien entendu ouvert MyProject pour accéder aux paramètres de démarrage de l'application mais lorsque je sélectionne "Sub Main", je ne peux plus choisir l'objet de fermeture.

    Je ne peux pas utiliser Form.run() ou Form.ShowDialog() dans Sub Main car plusieurs Forms s'enchainent en fonction du contexte de démarrage. J'ai donc résolu mon problème en changeant l'objet de démarrage.

    Tant que j'y suis, j'ai un autre problème: Je ne vois pas la propriété "Visible" des WindowsForm dans la fenêtre des propriétés sous Visual Studio 8 ! Est-ce normal ?

    Cordialement; Jean.

  8. #8
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    [QUOTE=hexar49;8411993]Merci pour toutes ces réponses.

    Je ne peux pas utiliser Form.run() ou Form.ShowDialog() dans Sub Main car plusieurs Forms s'enchainent en fonction du contexte de démarrage. J'ai donc résolu mon problème en changeant l'objet de démarrage.
    Form.run : cela n'existe tout simplement pas
    Form.ShowDialog() : Cela ouvre la Form en boîte de dialogue modale
    Form.Show() : Cela ouvre la Form en boîte de dialogue non modale
    Dans l'aide, il y a toujours l'instruction End


    Tant que j'y suis, j'ai un autre problème: Je ne vois pas la propriété "Visible" des WindowsForm dans la fenêtre des propriétés sous Visual Studio 8 ! Est-ce normal ?

    Cordialement; Jean.
    Ce n'est pas bien grave, elle est toujours dans l'aide. Elle est disponible dans probablement tous les contrôles. Elle est héritée de la classe Control.
    Et puis, il y a une méthode Hide qui est aussi héritée de la classe Control.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  9. #9
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Si l'objectif de l'application est d'ouvrir des formulaires et de s'arrêter lors de la fermeture d'une formulaire principal (ou du dernier formulaire). Je recommande de ne pas se prendre la tête et d'utiliser la case à cocher "Enable Application Framework" dans les propriétés du projet.

    S'il y a un besoin particulier (genre l'application n'a pas de formulaire principale mais un icone dans la barre de notification par exemple).

    Je recommande de créer une classe héritant de ApplicationContext qui servira de conteneur pour ces objets entre autre.

    Ensuite il faut créer un module avec une procédure Public (souvent appellé Main() mais c'est pas obligatoire) qui contiendra les ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Sub Main()
    Application.EnableVisualStyles
    Application.Run(New ClasseHeritantDeContext())
    End Sub

Discussions similaires

  1. fonctions des listes chaînées, et problème avec le main
    Par bounadalvidal dans le forum Débuter
    Réponses: 2
    Dernier message: 25/09/2010, 18h04
  2. Des problème avec le main.
    Par periambre dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 02/06/2009, 10h23
  3. Problème de sub avec un sous formulaire
    Par SpyesX dans le forum Access
    Réponses: 5
    Dernier message: 08/03/2006, 00h27
  4. [MySQL] Problème avec DATE SUB et INTERVAL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/01/2006, 00h36
  5. Réponses: 6
    Dernier message: 17/04/2005, 10h58

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