Winforms 为什么选择OpenFileDialog1->;ShowDialog don';不行?

Winforms 为什么选择OpenFileDialog1->;ShowDialog don';不行?,winforms,visual-c++,visual-studio-2012,openfiledialog,Winforms,Visual C++,Visual Studio 2012,Openfiledialog,我正在Visual Studio 2012 VC++Windows窗体中为一个界面工作。我使用了OpenFileDialog,但我不明白为什么ShowDialog不起作用 我在界面中添加了openFileDialog1。 然后在代码中,我只写 private: System::Void Ouvrir_Click(System::Object^ sender, System::EventArgs^ e) { openFileDialog1->ShowDialog(); } 对话

我正在Visual Studio 2012 VC++Windows窗体中为一个界面工作。我使用了
OpenFileDialog
,但我不明白为什么
ShowDialog
不起作用

我在界面中添加了
openFileDialog1
。 然后在代码中,我只写

private: System::Void Ouvrir_Click(System::Object^  sender, System::EventArgs^  e)
{
    openFileDialog1->ShowDialog();
}

对话框没有出现,并且我的界面也被阻止…

由于您没有指定父项,OpenFileDialog很可能最终打开或卡在表单后面。您的界面被阻塞的经验与此理论是一致的

请尝试,将当前窗口作为父窗口传递。这将确保对话框位于窗体顶部,并且始终显示:

openFileDialog1->ShowDialog( this );

@未免太公平了。这是我以前见过的事情,所以我想我会把它作为一个答案发布。你需要在Main()函数中使用[STAThreadAttribute]属性来避免这种情况。