0

我有一个必须编译为 x86 的应用程序,因为一些旧的 COM 控制器与非常旧的第 3 方软件驱动程序有关。

我注意到,每当我调用窗体的模态对话框时,而其他一些应用程序具有焦点(例如我正在逐步执行的 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)注意到这种行为?如果没有,那么我在其他地方的代码中一定有一些奇怪的地方。

有没有办法“修复”它?

4

1 回答 1

1

VS2010 默认为 x86,因此您的配置很常见,这表明您的代码确实有问题。

你确定在 dlg.ShowDialog(this) 实际上是父级并且是可见的等?

是否从非 UI 线程调用定位?如果没有,您是否尝试使用 dlg.ShowDialog()。

于 2012-08-14T18:18:07.857 回答