我有一个 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()
toShowDialog()
确实显示了正确的图标,但 DialogResult 在这种情况下并没有真正的意义。
我怀疑有一些事件或消息设置了永远不会被处理的 Windows 任务栏图标,但是当我扔进 aform.Refresh()
和 an Application.DoEvents()
(只是为了看看它是否有所不同)时,我仍然有默认图标。
我错过了什么?而且,为什么 ShowDialog 可以正常工作?
我正在使用 C# 4.0。