当前位置: 代码迷 >> C# >> C# MDI 子窗体被父窗体Panel截住
  详细解决方案

C# MDI 子窗体被父窗体Panel截住

热度:396   发布时间:2016-05-05 04:33:33.0
C# MDI 子窗体被父窗体Panel挡住
父窗体上有Panel控件(panel上放置别的有用的控件),打开子窗体后,子窗体却会被这个Panel挡住.请问有什么解决方法吗?
当我把Panel控件去掉后,子窗口也是位于父窗口的下面,已经把TopMost属性置为true,但还是位于下面,怎么破?
网上使用如下方法可以解决:
using System.Runtime.InteropServices;

[DllImport("user32")]
public static extern int SetParent(int hWndChild, int hWndNewParent);//这两句应该放在那儿???

   Form2 f2 = new Form2();
   f2.MdiParent = this;
   f2.Show();
   SetParent((int)f2.Handle, (int)this.Handle);

我试了一下,怎么就不行咧?
[DllImport("user32")]
public static extern int SetParent(int hWndChild, int hWndNewParent);
这两句是干啥子的?不太懂,菜鸟一枚,望解答。。。

------解决思路----------------------
反过来,如果panel被你的Mdi窗体挡住了呢?恐怕结果更糟糕吧。这个问题不是谁在上面的问题,而是你布局不合理的问题。
------解决思路----------------------
布局不合理+1
如果你panel里没有什么有用的东西
可以这样做:
Form2 f2 = new Form2();
   f2.MdiParent = this;
panel1.Controls.Add(f2);
   f2.Show();
这样就把f2放到panel里了,起码不会被panel遮住了
但是如果它遮住了panel里的控件,也是很头疼的一个问题

不要老纠结到底谁在上谁在下,先把想怎么布局弄明白,再实现,而不是先写了代码,才发现不是那么回事
------解决思路----------------------
别用MDI窗体了,子窗体  用成 用户控件吧。
------解决思路----------------------
引用:
别用MDI窗体了,子窗体  用成 用户控件吧。

布局的问题如果不解决,子窗体到底用什么都一样,最终互相遮挡是避免不了的
------解决思路----------------------
引用:
Quote: 引用:

别用MDI窗体了,子窗体  用成 用户控件吧。

布局的问题如果不解决,子窗体到底用什么都一样,最终互相遮挡是避免不了的

让他用用户控件 就是为解决 布局的问题。