如何让Mdi子窗体置底?

天地英豪 2009-09-25 04:14:11
要在mdi里面作导航所以要让导航的子窗体置底。
我试过了SetWindowPos不过不起作用!请高手指点。
...全文
170 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
天地英豪 2009-09-26
  • 打赏
  • 举报
回复
我将代码上传在http://d.download.csdn.net/down/1697855/wangshiwei1105
殷切希望高手们帮忙,小弟感激不尽!
yagebu1983 2009-09-26
  • 打赏
  • 举报
回复
学习了。。。
天地英豪 2009-09-26
  • 打赏
  • 举报
回复
wuyq11(人生如梦)
在子窗体切换的时候,导航子窗体还是会覆盖其它子窗体呀?
yuyingying1986 2009-09-26
  • 打赏
  • 举报
回复
不用MDI窗体,然后把其他窗体按控件的形式加到你的那个导航窗体上,这样就应该可以实现你的要求!
wuyq11 2009-09-26
  • 打赏
  • 举报
回复
或窗体置顶
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
public static extern bool SetWindowPos(
int hWnd,
int hWndInsertAfter,
int X,
int Y,
int cx,
int cy,
uint uFlags);
public const int HWND_BOTTOM = 0x1;
public const uint SWP_NOSIZE = 0x1;
public const uint SWP_NOMOVE = 0x2;
public const uint SWP_SHOWWINDOW = 0x40;
private void ShoveToBackground()
{
Win32.SetWindowPos((int)this.Handle, -1, this.Location.X, this.Location.Y, this.Size.Width, this.Size.Height, 1);
//Win32.SetWindowPos(
// (int)this.Handle,
// (int),
// 0, 0, 0, 0,
// Win32.SWP_NOMOVE | Win32.SWP_NOSIZE | Win32.HWND_BOTTOM);
}
天地英豪 2009-09-26
  • 打赏
  • 举报
回复
谢谢各位回答!
明确一下需求:我想要的是多个子窗口并存的时候,导航子窗体始终在最下面,像背景一样,但又能响应事件。 即便导航子窗体是当前活动窗口,它仍然在其它子窗体的下面!
wuyq11 2009-09-26
  • 打赏
  • 举报
回复
子窗体的controlbox删除
MdiChildWnd child = new MdiChildWnd();
child.MdiParent = this;
child.WindowState = FormWindowState.Maximized;
child.Show();
天地英豪 2009-09-26
  • 打赏
  • 举报
回复
在子窗体激活的时候调用SendToBack()倒是可以置底,但是会闪烁,有没有更好的解决办法?
天地英豪 2009-09-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 libinguest 的回复:]
作导航?把窗体的显示排在Z顺序的最后面不行吗?
[/Quote]
这个是应该是行,但在C#里面怎么设置zorder?
zhaozhijun0207 2009-09-26
  • 打赏
  • 举报
回复
我也想实现这样的效果,但不知道怎么做?
貌似SQL2000也没有这样的效果哦.
风之影子 2009-09-26
  • 打赏
  • 举报
回复
风之影子 2009-09-26
  • 打赏
  • 举报
回复
作导航?把窗体的显示排在Z顺序的最后面不行吗?
风之影子 2009-09-26
  • 打赏
  • 举报
回复
不太明白你的需求
天地英豪 2009-09-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 findcaiyzh 的回复:]
直接设置TOP属性就可以了
如果你想改大小和位置就设置TOP,Left, Width, Height.

例如,
private void toBottomToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.ActiveMdiChild.Top = this.Height - this.ActiveMdiChild.Height;
        }
我试过了,可以的。
[/Quote]
这是设置位置呀!
我想要的是多个子窗口并存的时候,导航子窗体始终在最下面,像背景一样,但又能响应事件。
即便导航子窗体是当前活动窗口,它仍然在其它子窗体的下面!
宝_爸 2009-09-25
  • 打赏
  • 举报
回复
直接设置TOP属性就可以了
如果你想改大小和位置就设置TOP,Left, Width, Height.

例如,
private void toBottomToolStripMenuItem_Click(object sender, EventArgs e)
{
this.ActiveMdiChild.Top = this.Height - this.ActiveMdiChild.Height;
}
我试过了,可以的。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧