長時間の操作中にカスタム フォームを使用してプログレス バーを表示する 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を使用しています。