我的项目是一个三层体系结构项目,与后端的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/

10-10 14:04