Winform显示在超过下一行之前等待



我有一个旧的winform应用程序,其中使用form.ShowDialog()命令显示winform。然而,这种方法对用户来说是不友好的,因为它会阻塞主UI,直到用户关闭表单。我曾尝试将代码更改为form.Show,这会解冻主UI,但在没有等待form关闭并获得接收到的数据的情况下,代码一直在变好。关于如何实现这一点,有什么想法吗?

MyObject OnButtonClick(){
var form = new MyForm();
form.Show(); <-- await till it is closed
MyObject results = form.MyCustomResults;
return results;
}

您可以附加到FormClosed事件:

private void button1_Click(object sender, EventArgs e)
{
var form = new Form2();            
form.FormClosed += Form_FormClosed;
form.Show();
}
private void Form_FormClosed(object sender, FormClosedEventArgs e)
{
MyObject results = (sender as Form2).MyCustomResults;
MessageBox.Show(results.ToString());
}

您可能还应该检查e.CloseReason的值

最新更新