Form上のコントロールが表示されない場合の対処方法|C#

作成したFormクラスを以下のように表示した際、Form上のControlが白くなって描画されない場合があります。

public partial class WaitDialog : Form {
    public WaitDialog() {
        InitializeComponent();
    }
}
using (Form waitDialog = new WaitDialog()) {
    waitDialog.Show();
    // 重い処理
}

この問題の解決方法です。

解決方法

Application.DoEvents()またはForm.Refresh()をコールするとコントロールが描画されます。

Application.DoEvents() を使う

using (Form waitDialog = new WaitDialog()) {
    waitDialog.Show(this);
    Application.DoEvents();
    // 重い処理
}

Form.Refresh() を使う

using (Form waitDialog = new WaitDialog()) {
    waitDialog.Show(this);
    waitDialog.Refresh();
    // 重い処理
}
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ
Comments
  1. 海尼 天山 より:

    designers.cs内部を確認
    // Form1
    記述している部分に
    this.Controls.Add(this.name?);//Control.name
    が消えている場合は追加しておけば見えるようになります。

    • かもめ かもめ より:

      海尼 天山様>
      なるほど、情報ありがとうございます。
      過去には、designers.csは自分で編集することはないとされてたので、注意が必要そうですね。

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です