我正在努力寻找一种使用C#创建所需表单功能的方法。
基本上,我想要一个具有指定超时期限的模态对话框。看起来这应该很容易实现,但我似乎无法让它工作。
一旦我调用 this.ShowDialog(parent)
,程序流程就会停止,而且我没有办法在用户首先单击按钮之前关闭对话框。
我尝试使用BackgroundWorker类创建新线程,但我无法在不同的线程上关闭对话框。
我是否漏掉了什么明显的东西?
感谢您提供的任何见解。
我正在努力寻找一种使用C#创建所需表单功能的方法。
基本上,我想要一个具有指定超时期限的模态对话框。看起来这应该很容易实现,但我似乎无法让它工作。
一旦我调用 this.ShowDialog(parent)
,程序流程就会停止,而且我没有办法在用户首先单击按钮之前关闭对话框。
我尝试使用BackgroundWorker类创建新线程,但我无法在不同的线程上关闭对话框。
我是否漏掉了什么明显的东西?
感谢您提供的任何见解。
theDialogForm.BeginInvoke(new MethodInvoker(Close));
使用 System.Windows.Forms.Timer,将其Interval属性设置为超时时间并将Tick事件处理程序设置为关闭对话框。
partial class TimedModalForm : Form
{
private Timer timer;
public TimedModalForm()
{
InitializeComponent();
timer = new Timer();
timer.Interval = 3000;
timer.Tick += CloseForm;
timer.Start();
}
private void CloseForm(object sender, EventArgs e)
{
timer.Stop();
timer.Dispose();
this.DialogResult = DialogResult.OK;
}
}
计时器在UI线程上运行,因此可以安全地从Tick事件处理程序中关闭窗体。