在.NET中创建新的最大化MDI子窗体的图标问题

lc.*_*lc. 15 .net icons mdi winforms

我有一个.NET 3.5 MDI WinForms应用程序.

我设置了一个子表单的Icon属性,该图标在表单的左上角正确显示.然后我最大化子表单,图标仍然可以.

随着子窗体仍然最大化,我打开另一个子窗口,自动出现最大化.此表单的图标不是Icon属性中的图标,而是默认的.NET图标(带有蓝色,红色和黄色方块的图标).但是,如果我调整 MDI父窗体的大小,图标将自行重置并正确显示.

有没有人有解决方法或知道为什么会这样?

Tom*_*Tom 11

对Calanus解决方案的略微修改:

    private void MdiBase_Load(object sender, EventArgs e)
    {
        // Fixes bug where loading form maximised in MDI window shows incorrect icon.
        this.Icon = Icon.Clone() as Icon;
    }
Run Code Online (Sandbox Code Playgroud)

这允许您在设计时设置图标(就像您对其他表单一样),并且不需要任何硬编码文件或资源访问.


Cal*_*nus 9

对,我找到了解决方案......

解决方法是在子窗体的load事件上再次设置图标,如下所示:

private void StatsForm_Load(object sender, EventArgs e)
{
    //bug that means you have to set the desired icon again otherwise it reverts to default when child form is maximised
    Icon = new System.Drawing.Icon("research.ico");
}
Run Code Online (Sandbox Code Playgroud)

这意味着您必须首先将有问题的图标文件添加到VS项目/解决方案中,并将其设置为"始终复制",以便在构建解决方案时复制该文件.

HTH Calanus

  • 奇迹般有效.谢谢.无论出于何种原因,我从没想过尝试重置图标.它也可以作为嵌入式资源使用,因此您没有大量(可替换的)文件位于最终目录中. (2认同)