我的项目是一个三层架构项目,与后端的 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 窗体 GUI 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6718148/