長時間の操作中にカスタム フォームを使用してプログレス バーを表示する Windows フォーム アプリケーションがあります。このフォームは現在、プログラムの他のウィンドウと共にタスク バーに表示されるように設定されています。ただし、アプリケーションの他のウィンドウには適切なアプリケーション アイコンが表示されますが、このカスタム フォームにはデフォルトのアイコンしか表示されません。

デザイナーのアイコンを、他のすべてのウィンドウで使用する同じアイコン ファイルに設定しましたが、この特定のフォームだけにこの問題があります。アイコンは、フォームのキャプションにも正しく表示されます。form.Icon = Resources.Sample_Icon;子フォームのコンストラクタまたは using ループで手動でアイコンを設定しても効果がないようです。
問題を再現するコード サンプルを次に示します。
// 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タスクバーアイコンを設定するイベントまたはメッセージがあると思われますが、aform.Refresh()とaを入れたときApplication.DoEvents()(違いがあるかどうかを確認するためだけに)、デフォルトのアイコンがまだありました。
私は何が欠けていますか?また、ShowDialog が正しく機能するのはなぜですか?
私はC#4.0を使用しています。