去除MDI子窗体最大化时的默认图标
来源:互联网 发布:js字符串match的用法 编辑:程序博客网 时间:2024/05/16 12:14
最近开发MDI程序,碰到2个令人抓狂的小问题:
1、子窗体最大化时,不管子窗体是否设置了Icon,在主窗体菜单的左上角都会出现一个Icon,如下图所示
2、在子窗体最大化状态下,如果继续显示新的子窗体时,不管子窗体是否设置了自定义的Icon,主窗体菜单的左上角都会出现一个丑陋的默认程序Icon。
google了一下,找到一篇很有参考价值的文档:去除MDI子窗体最大化后在MainMenuStrip上自动产生的最大化等按钮
文中说明产生这2个问题的原因在于:子窗体最大化时,系统会自动添加一个System菜单,其中Text属性为空的菜单项即对应图标,System菜单中还包含了关闭、还原、最小化等菜单项。因此,只要将Text属性为空的菜单项去除,就可以不显示丑陋的Icon。接下来就好办了,在主菜单mainMenu的ItemAdded事件编写如下代码:
Private Sub mainMenu_ItemAdded(sender As Object, e As System.Windows.Forms.ToolStripItemEventArgs) Handles mainMenu.ItemAdded If e.Item.Text = "" Then mainMenu.Items.Remove(e.Item) End If End Sub
添加上述代码后是否就去除了丑陋的Icon了呢?程序运行效果如下
等等,丑陋的Icon到是不显示了,可是主窗体的菜单项也不显示了,真让人抓狂,微软这搞的什么东东(鄙视下微软,很多人都说这个微软的bug)!
看来,问题出在ItemAdded事件处理上,将主菜单也给去除了。经尝试,这个问题的最终解决办法就是动态处理主菜单的ItemAdded事件,在主窗体的Load事件中绑定ItemAdded事件处理程序,代码如下:
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load '窗体加载时处理主菜单的ItemAdded事件(不自动添加系统菜单) AddHandler mainMenu.ItemAdded, AddressOf mainMenu_ItemAdded Form2.MdiParent = Me Form2.Show() End Sub Private Sub mainMenu_ItemAdded(sender As Object, e As System.Windows.Forms.ToolStripItemEventArgs) If e.Item.Text = "" Then mainMenu.Items.Remove(e.Item) End If End Sub最终的运行效果如下图所示,问题解决,
- 去除MDI子窗体最大化时的默认图标
- 去除MDI子窗体最大化后在MainMenuStrip上自动产生的图标和最大化、最小化等按钮(转)
- 让MDI子窗体默认最大化
- 让MDI子窗体默认最大化
- VS2005中MDI子窗体怎么让他打开的时候最大化?默认最大化!winform
- MDI 子窗体最大化时显示
- c# MDI子窗体最大化
- VS2005中MDI子窗体最大化显示的问题
- WinForm(C#)中MDI子窗体最大化的问题
- MDI父窗体中的子窗体最大化后消除子窗体在父窗体菜单栏中的图标
- MDI父窗体中的子窗体最大化后消除子窗体在父窗体菜单栏中的图标
- MDI父窗体中的子窗体最大化后消除子窗体在父窗体菜单栏中的图标
- 解决winform中mdi子窗体加载时显示最大化最小化按钮的方法
- MDI的子窗体一旦最大化后,子窗体的图标就越过菜单栏跑到最上面去了(已解决)
- MDI的子窗体一旦最大化后,子窗体的图标就越过菜单栏跑到最上面去了(已解决)
- MDI的子窗体一旦最大化后,子窗体的图标就越过菜单栏跑到最上面去了(已解决) .
- C#mdi子窗体最大化问题
- C#:MDI子窗体最大化导致父窗体工具栏移动的问题解决
- Git使用
- 实现指定步长循环后移字符串数组算法
- 几种进程间的通信方式
- emacs命令表
- Java知识点。
- 去除MDI子窗体最大化时的默认图标
- win8 DCOM 中不存在WORD、EXCEL等OFFICE组件解决方案
- [每日一题] 11gOCP 1z0-053 :2013-10-12 RESULT_CACHE在哪个池?.............................44
- 初学bash,test学习遇到的问题,希望以后能找到答案
- Mybatis 中 $ 与 # 的区别
- 编写安全代码——小心有符号数的右移操作
- 软考学习--PV操作一--概念解析
- C++学习之旅——结构体和联合体的区别,以及数据对齐方式影响内存大小
- red hat 企业版更新源的添加