I have this code:
namespace TuyenTk
{
public partial class Form1 : Form
{
Form2 _form2 = new Form2("");
public Form1()
{
InitializeComponent();
_form2.Show();
int i = 0;
while (i < 5)
{
_form2.label1.Text = "" + i;
Thread.Sleep(500);
i++;
}
}
}
public class Form2 : Form
{
public System.Windows.Forms.Label label1;
public System.ComponentModel.Container components = null;
public Form2()
{
InitializeComponent();
}
private void InitializeComponent(string t)
{
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label1
//
this.label1.Location = new System.Drawing.Point(5, 5);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(290, 100);
this.label1.TabIndex = 0;
this.label1.Text = t;
//
// Form2
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(300, 100);
this.ControlBox = false;
this.Controls.Add(this.label1);
this.Name = "Form2";
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.ShowInTaskbar = false;
this.ResumeLayout(false);
}
}
}
when Form1 run, it show the Form2, but the Form2.label1 background is white, and have no text.
After 2.5 seconds, Form2.label1.Text = 4. So the value 0, 1, 2, 3 of i dont appear. How I can fix it? Thank you very much.
What you want to do (periodically update label) is achieved by usage of Timer component (you can drag it from ToolBox and place on your form).
Also creating public controls on other forms is not very good idea – if you really need to update some value on form2, then its better to declare public method/property in Form2 class, which will update label:
Also consider to move timer to Form2 (let this form update itself).