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(2.0)]Lancer une form depuis la forme principale


Sujet :

Windows Forms

  1. #1
    Dnx
    Dnx est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 290
    Points : 154
    Points
    154
    Par défaut [VB.NET(2.0)]Lancer une form depuis la forme principale
    Bonjour,

    j'ai une form principale dans laquelle je voudrais lancer 1 à N form dans des threads séparés tout en gardant le controle, dans le sens ou je surveille les threads depuis la forme qui les lance.
    je n'utilise pas de MDI. mais bien des délégués/multithreading/invoke et tuti quanti mais je n'arrive pas à les lancer correctement...


    code depuis lequel je lance le thread pour lancer une FORM

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       Dim t As Thread
     
            t = New Thread(AddressOf InvokeForm)
            t.Name = Me.computerName 
            t.Start()
    voici un bout de code des délégués etc...

    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
     
     
     
      Public Delegate Sub newForm()
     
        Private newFormProcess As newForm = AddressOf LaunchForm
     
        Private Sub InvokeForm()
            Try
                newFormProcess.Invoke()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub
     
        Private Sub LaunchForm()
     
            If Me.InvokeRequired Then
     
                Me.Invoke(Me.newFormProcess)
     
            Else
     
                Dim frm As New MainReader
     
                frm.setComputerName = Me.txtBxComputerName.Text.Trim
     
                frm.setSelectedQueue = Me.TreeView.SelectedNode.Text
     
                Application.Run(frm)
                'frm.ShowDialog()
     
            End If
        End Sub
    j'ai donc ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Starting a second message loop on a single thread is not a valid operation.  Use Form.showDialog instead
    j'essaye alors le form.showdialog mais je perds le contrôle de la form qui lance les forms...

    merci de bien vouloir m'aider.

    bien à vous

  2. #2
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Application.Run t'as le droit d'en mettre qu'UN SEUL dans une appli Winform. C'est LA boucle principale.

    Je comprend pas ce que tu appelles "garder le control".
    Si tu fais un "Show" au lieu d'un "ShowDialog", ça résoud pas ton pb ?

  3. #3
    Dnx
    Dnx est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 290
    Points : 154
    Points
    154
    Par défaut
    "Garder le control"

    je veux dire par la que je crée X threads, chaque thread est ajouté dans une arraylist donc ce qui te permet de "monitorer" les threads depuis la form qui lance les threads (isAlive, abort, etc...)

    ce qui marche tres bien dans le cas actuel avec application.run
    mais génère des bugs de GUI aléatoirement...

    en fouinant sur internet, j'ai pu lire qu'il fallait utiliser des delegate/invoke etc...
    et en faisant frm.show tout simplement, je perds la main, la form est complètement déconnectée de la form qui lance le thread

    bien à toi

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2006
    Messages : 27
    Points : 34
    Points
    34
    Par défaut
    En gros t'es entrain d'essayer de faire du MDI sans utiliser le MDI ... pourquoi veux-tu réinventer la roue?

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/08/2008, 16h33
  2. Réponses: 9
    Dernier message: 11/01/2007, 21h23
  3. [VB.NET]Lancer une application depuis MonProg
    Par PM_calou dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/09/2006, 11h42
  4. [VB.NET 2.0] Lancer une application installee sur un serveur
    Par kissskoool dans le forum Windows Forms
    Réponses: 13
    Dernier message: 01/06/2006, 13h19
  5. [Forms6i] Lancer un reports depuis un forms
    Par macben dans le forum Reports
    Réponses: 2
    Dernier message: 09/02/2006, 09h39

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