微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 为什么我的孩子表单没有在任务栏中显示自定义图标?

我有一个 Windows窗体应用程序,它使用自定义窗体在长时间操作期间显示进度条.此表单当前设置为在我的程序中显示在任务栏上以及其他窗口.但是,当我的应用程序的其他窗口显示相应的应用程序图标时,此自定义窗体仅显示认图标:

我将设计器中的图标设置为我所有其他窗口使用的相同图标文件,但只有这种特殊形式有此问题.该图标也会在表单的标题中正确显示.使用form.Icon = Resources.Sample_Icon手动设置图标;在子窗体的构造函数或使用循环中似乎没有任何效果.

这是一个重现问题的代码示例:

// Inside Form1.cs on a button click
using (var form = new SampleForm())
{
    form.Show();

    for (int i = 0; i < numberOfIterations; ++i)
    {
        // Do work here in a real program

        // This function just calls progressbar.PerformStep():
        form.UpdateProgress();
    }
}

将Show()更改为ShowDialog()确实显示正确的图标,但DialogResult在这种情况下实际上没有意义.

我怀疑有一些事件或消息设置了永远不会被处理的Windows任务栏图标,但当我扔进一个form.Refresh()和一个Application.DoEvents()(只是为了看它是否有所不同),我仍然有认图标.

我错过了什么?而且,为什么ShowDialog正常工作?

我正在使用C#4.0.

解决方法

即使调用了Show或ShowDialog,表单也不会从父表单继承其图标.您应该尝试明确更改其他表单的图标.在当前代码中执行此操作:

form.Icon = <your icon>;

或者,在其他表单的加载代码中执行此操作,只需参考表单本身即可.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐