C# 如何在一段时间后以编程方式打开和关闭窗体

C# 如何在一段时间后以编程方式打开和关闭窗体,c#,winforms,C#,Winforms,我在表单上有一个按钮,我想使用按钮单击打开此表单上的另一个表单,但1分钟后,新打开的表单必须自动关闭 如何执行此操作?您可以使用以下任一选项: 您可以使用Task.Delay()并在.ContinueWith()中关闭表单(如果表单仍处于打开状态) 或者,您可以在第二个表单中使用计时器,设置间隔60000 ms,然后在中勾选事件调用this.Close() 任务示例: 在下面的示例中,5秒钟后,我检查表单是否仍处于打开状态,然后将其关闭: private void button1_Click

我在表单上有一个按钮,我想使用按钮单击打开此表单上的另一个表单,但1分钟后,新打开的表单必须自动关闭


如何执行此操作?

您可以使用以下任一选项:

  • 您可以使用
    Task.Delay()
    并在
    .ContinueWith()
    中关闭表单(如果表单仍处于打开状态)

  • 或者,您可以在第二个表单中使用
    计时器
    ,设置间隔60000 ms,然后在
    中勾选
    事件调用
    this.Close()

任务示例:

在下面的示例中,5秒钟后,我检查表单是否仍处于打开状态,然后将其关闭:

private void button1_Click(object sender, EventArgs e)
{
    var f = new Form();

    Task.Delay(5000).ContinueWith((t) =>
    {
        if (f == null || f.Disposing || f.IsDisposed)
            return;

        f.Invoke(new Action(() => { f.Close(); }));
    });

    f.Show();
}

谢谢,现在我有两个表单,例如form1中的form1和form2。单击此按钮时,我希望在form1上显示form2,但我需要在这次关闭后打开一分钟。.FormPopop frm=new FormPopop();frm.Show();睡眠(5000);frm.Close();我正在使用这个,但是这个表单在任务栏中显示的问题需要在这个表单上显示,我做了ShowDailog,但是在显示未运行的线程时..感谢您回复errorsystem.threading.tasks.task“不包含DelayFormPopop frm=new FormPopop();frm.Show();Thread.Sleep(5000);frm.Close()的定义;我正在使用此功能,但此窗体在任务栏中显示的问题需要在此窗体上使用ShowDailog,但在显示未运行线程时。@mahmoud(1)不要忘记使用System.Threading.Tasks添加
(2)不要使用
Thread.Sleep()
,因为它会阻止UI线程,并且窗体似乎已被锁定或禁用。(3)若要在任务栏中不显示表单,请将
f.ShowInTaskBar=false;
(4)上述技巧也适用于
showlealog
(5)你也可以像我上面描述的那样使用
Timer
技巧。感谢@mahmoud在你接受答案时的反馈,你也可以友好地点击向上箭头投票,这完全不是强制性的,而是合理的,这是你的好意:)