加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 21:49:25 所属栏目:百科 来源:网络整理
导读:我有一个 Windows窗体应用程序,它使用自定义窗体在长时间操作期间显示进度条.此表单当前设置为在我的程序中显示在任务栏上以及其他窗口.但是,当我的应用程序的其他窗口显示相应的应用程序图标时,此自定义窗体仅显示默认图标: 我将设计器中的图标设置为我所
我有一个 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>;

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读