我的项目是一个三层体系结构项目,与后端的WCF服务进行通信。当后端能够从服务中获取数据时,后端将使用发布-订阅通知业务层,而发布-订阅则将其通知GUI层。
我已使用Visual Studios设计器将OpenFileDialog添加到我的UI设计中。按钮事件处理程序调用ShowDialog消息。但是,一旦单击按钮,整个UI就会挂起。
经过一番谷歌搜索后,我发现使用委托(delegate)是处理此类任务的首选方式。但是,无论有没有委托(delegate),问题仍然存在。
目前,我的代码如下所示:
private void bOpen_Click(object sender, EventArgs e)
{
Func<Image> del = delegate
{
OpenFileDialog d = new OpenFileDialog();
if (d.ShowDialog() == DialogResult.OK)
{
return Image.FromFile(d.FileName);
}
return null;
};
Invoke(del);
}
我来自Java世界,因此我并不真正熟悉C#UI编程的复杂性。
我在这里想念什么吗?
最佳答案
openFileDialog1->ShowHelp = true;
我将此行放入代码中,然后问题解决了。
关于c# - 调用OpenFileDialog.ShowDialog()时Windows Forms GUI挂起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6718148/