Contrôle de mise à jour et actualisation de la forme par l'appel de la classe de formulaire principal
Je veux mettre à jour le texte de la boîte tout en faisant quelque chose dans l'autre classe. Permettez-moi de mettre mon code :
Form1.cs
namespace TestApp
{
public partial class Form1 : Form
{
CalledClass call = new CalledClass();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
call.Call_UpdateBox();
}
public void UpdateBox()
{
textBox1.Text = "hello";
}
}
}
CalledClass.cs
namespace TestApp
{
class CalledClass
{
public void Call_UpdateBox()
{
Form1 mainform = new Form1();
//do looping for doing some tasks here and update textbox every time
mainform.UpdateBox();
}
}
}
La Call_UpdateBox fonction dans CalledClass est appelée lorsque le bouton sur le formulaire principal est cliqué, où j'ai à faire certains boucle et dans l'entre-mise à jour de la zone de texte dans le formulaire principal. Si la zone de texte est mis à jour si je vois sa valeur en mode debug, mais il reamins vide sur le formulaire principal. S'il vous plaît suggérer. Merci à l'avance.
Vous devez vous connecter pour publier un commentaire.
Vous êtes à la déclaration d'une nouvelle instance de
Form1
, pas référence à celui qui existe déjà. Vous devez:Thread.Sleep(1000)
si l'on veut, mais qui semble maladroit. Peut-être vous devriez re-penser à ce que vous faites à l'écran. Ce propos un texte de la liste de "ce qui s'est passé"? Comme un journal ou quelque chose (à l'écran ou non).Vous créez une nouvelle instance du formulaire, et vous n'avez même pas le montrer. Si vous n'êtes pas à l'appel de
UpdateBox()
sur la bonne instance de l'objet.Au lieu de cela, l'utilisation d'une instance actuelle de votre
mainForm
. Par exemple:Vous pouvez utiliser
Threads
mais d'une façon plus simple, puisque vous êtes dans WindowsForms est d'utiliser un BackgroundWorker,Votre Form1 serait, comme:
Form1 mainform = new Form1();
de CalledClass, dans la façon que j'ai mis, vous n'en aurez plus besoinLa plus simple façon
public static Form1 FormH;
édité le post