I have created some button dynamically now I want to show all these buttons one by one . how could i use delay function . I use thread.sleep in loop . but it make delay for all buttons but I want to make delay for each button. I am using C# visual studio 2012
for (int i = 0; i < 10; i++)
{
btn[i] = new Button();
btn[i].Text = i.ToString();
btn[i].Click += Form1_Click;
this.flowLayoutPanel1.Controls.Add(btn[i]);
System.Threading.Thread.Sleep(1000);
} //closing of code
You're currently blocking the UI thread - don't do that.
Instead, I suggest you use a timer. For example:
class Foo : Form
{
private int nextButtonToShow = 0;
private Timer timer;
private Button[] buttons;
internal Foo()
{
timer = new Timer();
timer.Tick += ShowNextButton;
timer.Interval = 1000;
timer.Enabled = true;
}
private void ShowNextButton(object sender, EventArgs e)
{
// TODO: Set location etc
Button button = new Button { Text = nextButtonToShow.ToString() };
button.Click += ...;
buttons[i] = button;
Controls.Add(button);
nextButtonToShow++;
if (nextButtonToShow == buttons.Length)
{
timer.Enabled = false;
}
}
}
(You should make sure you dispose of the timer when the form is disposed, too.)
See more on this question at Stackoverflow