Text qui ne s'actualise pas quand je le change

LolixDudu Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
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 ;)
A voir également:

4 réponses

BloodyAngel Messages postés 1482 Date d'inscription   Statut Contributeur Dernière intervention   403
 
Hello,

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

0
LolixDudu Messages postés 43 Date d'inscription   Statut Membre Dernière intervention  
 
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
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   403
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention  
 
Ha oui tiens, pourtant j'ai justement regardé msdn avant de répondre...
0
LolixDudu Messages postés 43 Date d'inscription   Statut Membre Dernière intervention  
 
Merci je regarderai demain
0