我有一个必须编译到x86的应用程序,因为有一些旧的COM控制器和很老的第三方软件驱动程序。
我注意到,任何时候我调用Form的模态对话框,而其他一些应用程序有焦点(就像我正在逐步完成的Visual Studio代码),那个对话框是后面的窗口。
private string Locate(string filename) {
if (!File.Exists(filename)) {
using (OpenFileDialog dlg = new OpenFileDialog()) {
dlg.FileName = filename;
if (dlg.ShowDialog(this) == DialogResult.OK) {
return dlg.FileName;
}
}
}
return filename;
}
我可以将应用程序编译为x64,但加载COM驱动程序将失败,导致应用程序永远无法启动。
是否有其他人(Visual Studio,.NET Framework或Windows 7)注意到此行为?如果没有,那么我的代码必须在其他地方搞砸了。
有没有办法“修复”它?
答案 0 :(得分:1)
VS2010默认为x86,所以你的配置很常见,这表明你的代码确实有些麻烦。
您确定dlg.ShowDialog(this)中的 this 实际上是父级并且可见吗?
是否从非UI线程调用了Locate?如果没有,你是否尝试使用dlg.ShowDialog()。