MDI窗体中,子窗体最大化后,如何不显示图标和最大化等按钮

zlhxx89 2007-05-09 11:29:49
即使将子窗体的MaxBox.MinBox,ControlBox,FormBorderStyle这些属性都设为False和NONE,子窗体最大化后,都会在MDI父窗体上显示图标和关闭,最小化,恢复大小等按钮。如何使它们消失?
...全文
2091 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
lausyu 2011-07-14
  • 打赏
  • 举报
回复
哎呀 大家都很厉害啊

我的方法很笨啊

就是建立一个父窗体的 menuStrip1 然后隐藏掉 ,

这样子窗体就乖了
wangfeihehe 2010-08-01
  • 打赏
  • 举报
回复
把borderstyle改成0。然后自己做个最大化和最小化的图标不就OK了?
bobyisland 2008-07-28
  • 打赏
  • 举报
回复
当子窗体最大化的时候,他的Icon和最大化,最小化按钮时插入到父窗体上的。所以,按照次序将其隐身就可以了
bobyisland 2008-07-28
  • 打赏
  • 举报
回复
屏蔽相应的系统消息

1. 先定义
public const int WM_GETTEXT = 0x000D; //WM_GETTEXT Message value is 0x000D.Hide Icon of Child Form when it Maxmized

2. 重载WndProc函数

protected override void WndProc(ref Message m)
{
if (m.Msg == WM_GETTEXT)
AdjustMenuItem();
else
base.WndProc(ref m);
}

3. 调整菜单的次序

private void AdjustMenuItem()
{
if (this.WindowState == FormWindowState.Maximized)
{
if (!(this.MdiParent.MainMenuStrip == null))
{
if (this.MdiParent.MainMenuStrip.Items.Count > (this.MdiParent as MainForm).OriginalMenuItemCount)
{
if (this.MdiParent.MainMenuStrip.Items[0].Alignment == ToolStripItemAlignment.Left)
{
if(this.MdiParent.MainMenuStrip.Items[0].Visible)
this.MdiParent.MainMenuStrip.Items[0].Visible = false;
}
}
}
}
}

zryStar 2008-07-28
  • 打赏
  • 举报
回复
楼主解决了没有啊,顶
yyy39 2007-06-11
  • 打赏
  • 举报
回复
试试: 关闭子窗体的系统控制菜单ControlBox=fase
sanle 2007-05-27
  • 打赏
  • 举报
回复
个人觉得,这样的系统不会很稳定
MikeCheers 2007-05-27
  • 打赏
  • 举报
回复
研究了一上午 终于搞定 虽然变通的方法 但也实在没有找到更好的方法
在父窗体上加一个MenuStrip控件 并将父窗体的MainMenuStrip属性设置为刚添加的MenuStrip控件 在将该MenuStrip控件的Visible属性设置为false ok 大功告成
aytayt 2007-05-25
  • 打赏
  • 举报
回复
1.要把整拦都去掉就把外观FormBorderStyle属性设置None
2.如果只想除了最大最小的按钮就在窗口样式里面的那些属性都设置成FLASE
还有就是1+2都做了,不知道你要哪个结果,自己试试
zlhxx89 2007-05-25
  • 打赏
  • 举报
回复
。。。楼上,我不是在4楼写了解决方法了嘛,也是在CSDN里找到的,不过只能算变通的方法。。
直接设置属性是没用的,必须在窗体装载后,再设置Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None才能起作用。
lzuchina 2007-05-22
  • 打赏
  • 举报
回复
帖子不能沉了啊!
lzuchina 2007-05-21
  • 打赏
  • 举报
回复
顶到天上去
lzuchina 2007-05-20
  • 打赏
  • 举报
回复
继续顶
spkl1 2007-05-19
  • 打赏
  • 举报
回复
MDI不显示子窗体标题就不是MDI了``
不过方法是有的``
采用皮肤控件``可以很好的解决这个问题```
http://blog.csdn.net/spkl1/archive/2007/01/17/1485162.aspx
laneyu 2007-05-19
  • 打赏
  • 举报
回复
只要把FormBorderStyle设置成NONE就好了呀,我就是这样设置的啊
patrickpan 2007-05-19
  • 打赏
  • 举报
回复
和和,我用的第三方控件DeVExpress,能实现你要求的功能。
lzuchina 2007-05-18
  • 打赏
  • 举报
回复
搂主达人搞定了吗, 我现在正在解决这问题,都快一整天了,网上搜了一大堆,挨着试就是,没有效果,我想保留mdi 子窗体的 的 关闭 按钮,让子窗体的ICON 图标和最大最小化按钮隐藏 ,如何实现啊?高人 出现!!!!!!!1
SunOnNET 2007-05-12
  • 打赏
  • 举报
回复
我也是碰到这种问题,我是不想出现关闭和恢复按纽.
我现在是在子窗体的FormClosing和Resize事件中写代码禁止用户关闭和改变窗口大小.

zlhxx89 2007-05-09
  • 打赏
  • 举报
回复
...的确好多人问了,我先搜索过的。。
但是,问题总要解决的,我采用以前这里帖子的一个办法实现,即在子窗体的Resize事件中,加这么一句话既可。
这样做,会造成什么新问题吗?
Private Sub frmMenu2_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
'必须加上这一句,才能在MDI窗体上,不显示子窗体的最大化,最小化,图标等。
'在设计时,设置这个属性没有用
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
End Sub
sz709 2007-05-09
  • 打赏
  • 举报
回复
这个问题有几个人问过了

好像Visual目前版本暂时实现不了,
等待新版...
加载更多回复(2)

110,538

社区成员

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

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

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