none
Threads et Windows Forms RRS feed

  • Question

  • Bonjour à tous !

    Je fais appel à vous, car j'utilise un délégué pour accéder à une fenêtre en Windows Form, mais je n'y arrive pas ; Windows Forms ne se modifie pas. Il n'y a aucune erreur ou exception...  C'est pour créer un chat.

    Les lignes qui modifient le contrôle graphique (une RichTextBox) sont passées, mais on ne voit pas les changements lors de l'exécution. Pourtant, j'ai bien testé, et l'événement TextChanged est "activé" lors du passage sur ces lignes. Oo

    Je ne comprends pas ce qui se passe

    Merci de m'aider !

    Syrl :)

    Un code vous aidera sûrement...

    'Déclaration du délégué :
    Delegate Sub dAfficher(ByVal Texte As String)
    'Invoke du délégué :
    Dim d As Form1 = CType(Application.OpenForms(0), Form1)
    d.Invoke(New Form1.dAfficher(AddressOf Form1.Afficher), System.Text.Encoding.UTF8.GetString(Octets))

    'Fonction Afficher : Sub Afficher(ByVal Texte As String) Try If Texte.StartsWith("Info") Then Texte = Texte.Remove(0, 5) 'Ca ne marche pas à partir d'ici non plus Me.RTXT_CHAT.Text += Texte + vbNewLine Me.RTXT_CHAT.Select(Me.RTXT_CHAT.Text.Length - Texte.Length, Texte.Length) Me.RTXT_CHAT.SelectionColor = Color.Red ElseIf Texte.StartsWith("Message") Then Texte = Texte.Remove(0, 8) Dim IsPseudo As Boolean = True 'Indique si la boucle en est au pseudo ou au message Dim Pseudo As String = "" For Each Caractere In Texte.ToCharArray 'décomposition pseudo//message pour mettre en couleurs sur le RichTextBox If Caractere <> "]" Then Pseudo += Caractere Texte = Texte.Remove(0, 1) Else Pseudo += Caractere Texte = Texte.Remove(0, 1) Exit For End If Next 'C'est à partir d'ici que ça ne fonctionne pas... Me.RTXT_CHAT.Text += Pseudo Me.RTXT_CHAT.Select(Me.RTXT_CHAT.Text.Length - Pseudo.Length, Pseudo.Length) Me.RTXT_CHAT.SelectionColor = Color.Green Me.RTXT_CHAT.Text += Texte + vbNewLine Me.RTXT_CHAT.Select(Me.RTXT_CHAT.Text.Length - Texte.Length, Texte.Length) Me.RTXT_CHAT.SelectionColor = Color.Black End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub





    • Modifié syl' mardi 15 avril 2014 15:28
    mardi 15 avril 2014 15:26

Réponses

  • Bon, finalement, j'ai été contraint de supprimer la classe dans laquelle était mon invoke. J'ai donc tout déplacé dans la classe principale, et ça a l'air de fonctionner...
    • Marqué comme réponse syl' mardi 15 avril 2014 18:57
    mardi 15 avril 2014 18:55