C# MDI窗体的中添加菜单栏的一个小问题

mfc198666_002 2011-06-13 09:03:31
MDI子窗体最大化时在主窗体的右上角有3个图标(最小化,最大化,关闭),当我在MDI主窗体中添加菜单栏时,就会发现MDI的窗体的那3个图标在菜单栏上面,非常影响美感,我见过大家都是吧这个3个图标做在菜单栏上的,请问是怎么做的?
...全文
390 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
mosquito19871214 2013-06-24
  • 打赏
  • 举报
回复
alowdrop选项设为FALSE
bobwaihui403 2012-12-13
  • 打赏
  • 举报
回复
好东西,值得学习
Maa 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 mfc198666_002 的回复:]
我照你的弄了下,好用了没问题。 但是我不知道为什么刚才不好用,我的和你的一样基本上。麻烦帮看一下可以么。谢谢

谢谢大家结贴了
[/Quote]

这个只有看具体代码才能知道了,如果本来就设定了“form2.MdiParent = this; // this是form1
”这一行的话,应该没什么问题的,难道是编译时有什么状况?呵呵。
mfc198666_002 2011-06-13
  • 打赏
  • 举报
回复
我照你的弄了下,好用了没问题。 但是我不知道为什么刚才不好用,我的和你的一样基本上。麻烦帮看一下可以么。谢谢

谢谢大家结贴了
mfc198666_002 2011-06-13
  • 打赏
  • 举报
回复
我重新弄了以下好用了,谢谢你, 但是我不知道为什么我的不好用。
Maa 2011-06-13
  • 打赏
  • 举报
回复
lz你现在的效果是怎样的?是子窗体最大化时会把主窗体挡住么?

如果是这样的话,就添加上面的这行代码就可以了:

form2.MdiParent = this;  // this是form1

Maa 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 mfc198666_002 的回复:]
我的菜单栏就是在主窗体啊,做子窗体上那得多麻烦啊。 子窗体的那3个按钮如何合并到主窗体的菜单栏上。

回复8楼,
我做出来之后子窗体最大化时,那3个图标并没有合并到主窗体的菜单栏上,我就是想最大化时合并,请问,是不是我哪里写错了,还是说我必须得,调整一下布局什么的?

谢谢
[/Quote]

我刚才做了一个简易的MDI,应该没有特别设置啊,大致步骤如下:
1.创建两个Form,Form1是主,Form2是子。
2.主Form1的IsMdiContainer属性设置为True。子Form2采用缺省的False。
3.主Form1上添加对应的MenuStrip控件,作为菜单栏,并且编辑需要的菜单。
4.在该MenuStrip上随便找一个添加了的菜单项,双击,编辑该项的“Click”事件,大致代码如下:

private void toolStripMenuItem3_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.MdiParent = this;
form2.Show();
}


大致就是这样的效果呀,请lz确认一下。
mfc198666_002 2011-06-13
  • 打赏
  • 举报
回复
样式参照word2003:在右上角大叉下面有个小叉,小叉在主窗体的菜单栏上
mfc198666_002 2011-06-13
  • 打赏
  • 举报
回复
不是,只要子窗体的最大最小化按钮,在子窗体最大化时,显示到主窗体的菜单栏上,同时保证他好用,就是能让子窗体最大最小化。
mfc198666_002 2011-06-13
  • 打赏
  • 举报
回复
我的菜单栏就是在主窗体啊,做子窗体上那得多麻烦啊。 子窗体的那3个按钮如何合并到主窗体的菜单栏上。

回复8楼,
我做出来之后子窗体最大化时,那3个图标并没有合并到主窗体的菜单栏上,我就是想最大化时合并,请问,是不是我哪里写错了,还是说我必须得,调整一下布局什么的?

谢谢

老鼠爱上猫 2011-06-13
  • 打赏
  • 举报
回复
你想要把 父窗体和子窗体的 最大,最小, 关闭,按钮合并,这是没有办法做到的,
你最多是 把子窗体的 最大,最小,隐藏,默认最大,

毕竟这还是两个窗体,父窗体也有自己的 ,大,小变化。
子窗体也是。
Maa 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mfc198666_002 的回复:]
好像大家没理解我的意思,我是想吧MDI子窗体的那3个图标(最小化,最大化,关闭)合并到,MDI主窗体上,就是主窗体的菜单栏的右边。我现在的状况是主窗体菜单栏一行,那3个图标一行。

怎么做额,,,
[/Quote]

子窗体最大化的时候,最小化等三个图标本来就是在主窗体菜单栏的最右边的呀。
lz你是不是想子窗体非最大化的时候也是这样的效果?
老鼠爱上猫 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 mfc198666_002 的回复:]
MDI子窗体最大化时在主窗体的右上角有3个图标(最小化,最大化,关闭),当我在MDI主窗体中添加菜单栏时,就会发现MDI的窗体的那3个图标在菜单栏上面,非常影响美感,我见过大家都是吧这个3个图标做在菜单栏上的,请问是怎么做的?
[/Quote]

另稍微补充下,

MDI 这类窗体,父窗体都是作为框架 使用的, 而子窗体 ,也大多是模块的 管理窗体。如果功能简单 那么另说了。

一般不在子窗体 做菜单, 菜单都是 父窗体 建立的,自动就继承到子窗体里面了,如果你觉得哪个菜单不想在某个子窗体上现实,就做判断,visable = false 掉就可以了

所以你的问题 其实出现在 菜单 要在父窗体开发,不要在子窗体开发,父窗体 是一个 菜单, 工具条的全集合。

下此要注意




mfc198666_002 2011-06-13
  • 打赏
  • 举报
回复
哦,子窗体是最大化的
mfc198666_002 2011-06-13
  • 打赏
  • 举报
回复
好像大家没理解我的意思,我是想吧MDI子窗体的那3个图标(最小化,最大化,关闭)合并到,MDI主窗体上,就是主窗体的菜单栏的右边。我现在的状况是主窗体菜单栏一行,那3个图标一行。

怎么做额,,,
浪子-无悔 2011-06-13
  • 打赏
  • 举报
回复
路过顺便学习!!
wuxiaoke2009 2011-06-13
  • 打赏
  • 举报
回复
this.WindowState = FormWindowState.Minimized;
xuexiaodong2009 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mafangming 的回复:]

往你的MDI主窗体上添加一个MenuStrip控件,然后按照你的菜单设计配置该控件,就得到了菜单栏。

然后设置主窗体WindowState属性,可以达到实现最大化/最小化/正常等三种情况:

C# code
this.WindowState = FormWindowState.Minimized; // 最小化
this.WindowState = FormWindowState.……
[/Quote]初始化子窗体的WindowState为最大化
Maa 2011-06-13
  • 打赏
  • 举报
回复
往你的MDI主窗体上添加一个MenuStrip控件,然后按照你的菜单设计配置该控件,就得到了菜单栏。

然后设置主窗体WindowState属性,可以达到实现最大化/最小化/正常等三种情况:

this.WindowState = FormWindowState.Minimized;  // 最小化
this.WindowState = FormWindowState.Maximized; // 最大化
this.WindowState = FormWindowState.Normal; // 正常

110,534

社区成员

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

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

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