日期:2014-05-17  浏览次数:21170 次

怎么在全屏显示的窗体里始终置顶新窗体
有一个全屏显示的应用程序,里面有几个MDI窗体,现在在一个MDI窗体里面调用一个外部的执行程序窗体(该执行程序窗体默认是置顶的),调用外部程序时显示置顶,在该MDI窗体里面进行其他操作时,外部程序被遮挡;切换其他MDI窗体时,调用的外部程序也被遮挡了,现在不知道该怎么解决这个问题了,请大家帮帮忙,谢谢了!

外部程序已经将topmost:true;

------解决方案--------------------
下面的窗体topmost设为false,上面的设置为true.
------解决方案--------------------
外部窗体是自己写的么?能设置它的owner为全屏应用程序么?
------解决方案--------------------
把弹出窗体的模式设置为parent,这样就可以始终在屏幕最前面显示了。忘给分。
------解决方案--------------------
我说的就是设置父窗体的意思。

A 全屏窗体 (parent of B)
B 外部窗体 (child of A)(B.owner = A)

子窗体应该可以直接setowner

或者可以在子窗体上这么写

    [DllImport("user32.dll")]
    private static extern int SetWindowLong(HandleRef hWnd, int nIndex, int dwNewLong);

    SetWindowLong(new HandleRef(this, this.Handle), -8, ownerHandle.ToInt32());

其中的ownerHandle就是父窗体的句柄。
同样是topmost窗体,子窗体就会一直显示在父窗体前边了。