如何在C#中设置代码行之间的延迟?

Kat*_*ate 1 c# winforms

我是c#的新手,我正在使用Windows窗体.

我有form13个buttons.我正在尝试设置3个按钮,以便在表单加载时/之后逐个显示.我使用了以下代码,但是当我运行程序时,它不起作用,同时出现3个按钮

 private void MainForm_Load(object sender, EventArgs e)
    {    //Hide all buttons
        button1.Visible = false;
        button2.Visible = false;
        button3.Visible = false;


        Thread.Sleep(500);

       //show buttons one by one
        button1.Visible = true;
        Thread.Sleep(500);
        button2.Visible = true;
        Thread.Sleep(500);
        button3.Visible = true;


    }
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么.任何人都可以帮助我如何在表单加载时/之后逐个显示3个按钮.我很高兴收到任何其他想法.谢谢

Gus*_*man 6

您正在使用Thread.Sleep阻止UI线程,并且未反映更新.

你可以做的最好的事情是创建一个异步函数并使用Task.Delay,这样线程仍然会响应,你会看到更新:

private async void MainForm_Load(object sender, EventArgs e)
{    //Hide all buttons
    button1.Visible = false;
    button2.Visible = false;
    button3.Visible = false;


    await Task.Delay(500);

   //show buttons one by one
    button1.Visible = true;
    await Task.Delay(500);
    button2.Visible = true;
    await Task.Delay(500);
    button3.Visible = true;


}
Run Code Online (Sandbox Code Playgroud)