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>; 或者,在其他表单的加载代码中执行此操作,只需参考表单本身即可. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |