Le controle pour avoir un équivalent de console dans une form [Résolu]

Signaler
Messages postés
148
Date d'inscription
lundi 12 février 2007
Statut
Membre
Dernière intervention
9 novembre 2013
-
Messages postés
148
Date d'inscription
lundi 12 février 2007
Statut
Membre
Dernière intervention
9 novembre 2013
-
Bonjour à tous,

Attention, question de débutant

Je cherche un contôle à mettre sur une form ou je peux afficher du texte et où je peux avoir l'équivalent des" console.writeline" ou "console.readline" . J'ai essayé avec une textbox multiline ou un label, mais je n'ai pas réussi à obtenir ça, le mieux obtenu étant le texte à la suite avec Me.TextBox1.AppendText ("texte")

Merci!

4 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
Ton message d'erreur me laisse supposer que la fonction qui met à jour ton textbox tourne dans un thread différent de celui de l'écran. Un thread qui tu aurais lancer toi, à priori, peut-etre par un backgroudworker ???

Tu ne peux pas effectivement mettre à jours des controles d'écran directement depuis un thread séparé.

Il existe une technique, que je ne saurais t'expliquer, je ne la maitrise pas, je ne l'ai encore jamais mis en oeuvre.

Mais c'est une question qui revient de temps en temps sur le forum, donc tu y trouveras les réponses.
Si c'est bien là le problème.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
"...e mieux obtenu étant le texte à la suite avec Me.TextBox1.AppendText ("texte")..."

Ben oui, c'est toi qui gère la totalité du texte à afficher, y compris les sauts de lignes. Si tu ne rajoute pas les sauts à la fin de ton texte, ton textbox ne vas pas les inventer.
Me.TextBox1.AppendText ("texte" & Environment.Newline)

Et pour répondre à la question dans le titre, ce controle n'existe pas. C'est à toi à le faire avec un Label, Textbox, RichTextBox, .....

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
148
Date d'inscription
lundi 12 février 2007
Statut
Membre
Dernière intervention
9 novembre 2013

Le problème c'est que j'ai une erreur d'exécution "Le contrôle TextBox1 a fait l'objet d'un
accès à partir d'un thread autre que celui sur lequel il a été créé"

J'ai juste fait une fonction pour ajouter du texte:

    Function Append(ByVal text)
        If text = Nothing Then
            Resume
        Else
            Me.TextBox1.AppendText(text & Environment.NewLine)
        End If
    End Function
End Class

La doc de l'erreur propse soit une centaine de lignes de code "pour bien faire les choses" soit de notifier au début CheckForIllegalCrossThreadCalls = False

J'ai mis la constante à false mais je ne sais pas si je dois vraiment résoudre cette erreur, que je n'avais jamais rencontré en vb6. Il  a une astuce?

Merci pour ta réponse Casy
Messages postés
148
Date d'inscription
lundi 12 février 2007
Statut
Membre
Dernière intervention
9 novembre 2013

J'utilise une bibliothèque pour écouter des messages broadcastés sur le réseau. Je suppose que les threads séparés viennent de là.

Ce que j'aurais voulu trouver, c'est une classe de manipulation de text box multiligne utilisable depuis d'autres threads mais je ne sais pas si ça se fait. Mettre les mains dans les gestion des processus (thread = process?) me semble un peu hasardeux, puisque j'ai eu énormément de mal à trouver la commande vbCRlf !