Text qui ne s'actualise pas quand je le change

Fermé
LolixDudu Messages postés 43 Date d'inscription mercredi 20 juin 2018 Statut Membre Dernière intervention 13 avril 2019 - Modifié le 20 juin 2018 à 17:32
 Utilisateur anonyme - 21 juin 2018 à 20:46
Bonjour,
Je suis actuellement en train de créer une application en C# avec le logiciel Visual Studio.
J'ai créé un objet TextBox que j'ai appelé "Message_Box" qui joue le rôle de console.
Voici mon code (en simplifié) :

private void AA(object sender, RoutedEventArgs e)
{
    b();
}

void BB()
{
     Message("Ceci est Un exemple");
     LoadFile(filePath);
     // le programme continue en effectuant quelques boucles
}

void Message(string msg)
{
    Message_Box.Text = msg + (char)13 + Message_Box.Text;
}


Mes fonctions ne s’appellent évidement pas "AA" et "BB" mais c'est un moyen simple de vous expliquer mon problème. AA se déclenche quand j'appuie sur un bouton (pour l'instant ça marche).AA appelle BB qui demande a écrire un message dans ma fausse console avant de charger un fichier(et c'est la ou ça coince). En théorie, mon message devrait apparaître avant que BB se mette a charger le fichier. Mais non (et c'est tout le problème), mon message ne s'affiche que quand BB a finis son travail.
J'ai essayé le "UpdateLayout" et d'autre chose mais cela n'a pas fonctionné.

Je vous remercie d'avance de votre aide et je vous serait très reconnaissant

PS : Je n'ai pas essayé qu'avec un TextBox, j'ai aussi essayé avec le Label et le TextBox ;)

4 réponses

BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 401
20 juin 2018 à 18:02
Hello,

as-tu essayé de forcer un Refresh sur ta textbox ?
Message_Box.Refresh()

0
LolixDudu Messages postés 43 Date d'inscription mercredi 20 juin 2018 Statut Membre Dernière intervention 13 avril 2019
20 juin 2018 à 19:26
Merci mais pour une raison inconnue, je n'y ai pas accès.
J'ai trouvé qq qui marche, c'est le : System.Windows.Forms.Application.DoEvents();
Il permet d’accomplir toute les taches en attentes avant de faire autre chose et ça marche nikel
0
Utilisateur anonyme
20 juin 2018 à 19:34
Bonsoir,
il n'y a pas de méthode Refresh pour les textbox en C#.

Le problème, je pense, vient du fait que
// le programme continue en effectuant quelques boucles
prend la priorité sur l'affichage.

L'utilisation de DoEvents est un palliatif quand on ne trouve pas de solution "plus propre".
Ton calcul est peut-être trop gourmand, auquel cas, il serait judicieux de le faire dans un thread dédié.
0
LolixDudu Messages postés 43 Date d'inscription mercredi 20 juin 2018 Statut Membre Dernière intervention 13 avril 2019
20 juin 2018 à 19:51
Tu a une bonne idée. Sais -tu comment faire un thread dédié , je n'ai pas trouvé de bonnes méthodes sur Internet
merci
0
BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 401
21 juin 2018 à 17:04
Il existe bel et bien une méthode Refresh pour les textbox en C# : https://docs.microsoft.com/en-us/dotnet/api/system?redirectedfrom=MSDN&view=netframework-4.8windows.forms.textbox(v=vs.110).aspx
0
LolixDudu Messages postés 43 Date d'inscription mercredi 20 juin 2018 Statut Membre Dernière intervention 13 avril 2019
21 juin 2018 à 17:47
Je sais mais je n'utilise pas les forms. La ce que j'utilise c'est Window . il est trop tard pour tout recommencer malheureusement

--
0
Utilisateur anonyme > BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018
21 juin 2018 à 19:25
Ha oui tiens, pourtant j'ai justement regardé msdn avant de répondre...
0
LolixDudu Messages postés 43 Date d'inscription mercredi 20 juin 2018 Statut Membre Dernière intervention 13 avril 2019
20 juin 2018 à 21:15
Merci je regarderai demain
0