+ -
当前位置:首页 → 问答吧 → 在win 7下,有时候模式化窗体会显示在父窗体后面?

在win 7下,有时候模式化窗体会显示在父窗体后面?

时间:2011-12-22

来源:互联网

我的问题的这样子的,我们做了一个winform系统,在这个系统当中会有一些模式化弹出的窗体
如:
  Form1 f1 = new Form1();
  f1.ShowDialog();
在xp系统下如何操作都不会有问题的,(即新弹出来子窗体f1只能显示在调用它的父窗体上面的,这是正常的),而在win 7的系统 下就会时不时地出现在父窗体的后面哦,因为我的子窗体比父窗体要小的,所以呢就给父窗体挡住了,因为我又是模式化方式进行弹出的,所有这个时候我就操作不了,
而且更为奇迹的是,有的时候又可以正常显示的哦,并不是每一次操作都会这样子的,
我真搞不明白了,
最当我还认为是不是我没有把子窗体的topmost设置为"真"呢,结果测试过了,不是这个原因的,
现在让我想不明白的,是同一个程序在xp下操作没有一点问题的,而在win7下就有的时候会有问题的。
看看有没有那个朋友见个我这样的问题,可以出来讨论一下的。
分给得不是很多,重要知识共享。谢谢了。

作者: zhou946163   发布时间: 2011-12-22

f1.ShowDialog(this);

作者: pengshan   发布时间: 2011-12-22

引用 1 楼 pengshan 的回复:
f1.ShowDialog(this);


问题主要是有时候是可以的,有的时候是不行的哦。请问这样
f1.ShowDialog(this);


f1.ShowDialog();
 有什么区别叫呢,本质上的区别有吗?

作者: zhou946163   发布时间: 2011-12-22

f1.ShowDialog(this);

当然不一样
看说明
用f1.ShowDialog(this);

作者: ohkuy   发布时间: 2011-12-22

/// <summary>
  /// 窗体的包装类,可以避免对话框隐藏到主窗体后边,出现界面假死的现象。
  /// 使用方法 frm.ShowDialog( new WindowWrapper(父窗体的handle))
  /// 如:frm.ShowDialog( new WindowWrapper(this.Handle))
  /// </summary>
  public class WindowWrapper : System.Windows.Forms.IWin32Window
  {
  public WindowWrapper(IntPtr handle)
  {
  _hwnd = handle;
  }

  public IntPtr Handle
  {
  get { return _hwnd; }
  }

  private IntPtr _hwnd;
  }

作者: senline   发布时间: 2011-12-22

相关阅读 更多