如何以编程方式关闭对话框

Mar*_*oll 4 c#

我创建了一个简单的窗体,当您运行它时会弹出一个对话框,但无法以编程方式将其关闭。有人可以帮我吗?

Label lb = new Label();
Form frm = new Form();
lb.Left = 100;
lb.Top = 44;
frm.Controls.Add(lb);
frm.ShowDialog();
System.Threading.Thread.Sleep(2000);
Run Code Online (Sandbox Code Playgroud)

..Sleep(2000)之后,我希望它关闭。我试过了:

 frm.close();frm.dispose();frm.visible = false;
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Ale*_*ria 5

您可以在表单类中使用以下内容:

protected override async void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    await Task.Delay(2000);
    Close();
}
Run Code Online (Sandbox Code Playgroud)

在该OnLoad方法内部,运行一个等待2000 ms的任务并关闭表单。


Sir*_*ufo 5

要在特定时间后关闭任何表单,您可以使用扩展方法

public static class Extension
{
    public static async Task CloseAfterDelay(this Form form, int millisecondsDelay )
    {
        await Task.Delay( millisecondsDelay );
        form.Close();
    }
}
Run Code Online (Sandbox Code Playgroud)

并在显示表单之前调用它

Label lb = new Label();
Form frm = new Form();
lb.Left = 100;
lb.Top = 44;
frm.Controls.Add(lb);

frm.CloseAfterDelay( 2000 );

frm.ShowDialog();
Run Code Online (Sandbox Code Playgroud)