在MDI应用程序中,当MDI子窗体最大化时,窗体的图标将用作上下文菜单图标,显示在父窗体左侧MenuStrip中。当我将MDI应用程序中使用的表单的图标设置为大于16x16的东西(我使用的是32x32)时,该图标将以未缩放的方式绘制,并调整菜单的大小以适合其大小。请注意,如果ICO文件也包含该图标的16x16版本,则其工作正常。缩放父窗体的MenuStrip中最大化的MDI子项使用的图标
下面创建一个基本的应用程序,显示的行为:
- 创建一个新的解决方案和WinForms项目
- 变化Form1的的IsMdiContainer到
true
- 添加
MenuStrip
到Form1 - 创建一个新的表格称之为
MdiChildForm
- 设置
MdiChildForm
的图标为32x32的ICO文件,here's one I prepared earlier 在
Form1
添加菜单项,双击它来创建Click
事件处理程序,并添加以下内容:var child = new MdiChildForm(); child.MdiParent = this; child.Show(); child.WindowState = FormWindowState.Maximized;
的建立和运行,单击菜单项
请注意,再次单击菜单项时,该图标将更改为默认值,这在this question中进行了说明,此处不是问题。
我很确定这将被描述为'按设计',但它仍然令人讨厌。有没有办法强制上下文菜单图标缩小,调整源图标的大小?我可能也会这样做,但是我在做了一些内码捕捉。
+1这看起来像一个性感解决方案的开始,感谢分享:) – 2011-05-25 23:18:25