Le controle pour avoir un équivalent de console dans une form

Résolu
Billybobbonnet Messages postés 148 Date d'inscription lundi 12 février 2007 Statut Membre Dernière intervention 9 novembre 2013 - 28 avril 2008 à 16:19
Billybobbonnet Messages postés 148 Date d'inscription lundi 12 février 2007 Statut Membre Dernière intervention 9 novembre 2013 - 29 avril 2008 à 16:21
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

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
29 avril 2008 à 10:23
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
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 avril 2008 à 20: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
0
Billybobbonnet Messages postés 148 Date d'inscription lundi 12 février 2007 Statut Membre Dernière intervention 9 novembre 2013
29 avril 2008 à 08:54
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
0
Billybobbonnet Messages postés 148 Date d'inscription lundi 12 février 2007 Statut Membre Dernière intervention 9 novembre 2013
29 avril 2008 à 16:21
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 !
0
Rejoignez-nous