1

常にオントップに設定されているフォームがあります。以下のコードに示すタイマーを介して、500ミリ秒ごとにこれを強制します。タイマーは子スレッドから開始されています。

フォームでエラーが発生することがありますが、これはモーダルではなく、ユーザーはフォームを2回クリックする必要がなくなります。1回はモーダルにするため、もう1回は確認するためです(十分に速く実行した場合)。

ユーザーはメインフォームのパネルにあるコンボボックスを表示することもできますが、これを選択すると、タイマーがフォームをモーダルにした結果、ドロップダウンが再び明確になります(ユーザーがクリックして離れた場合と同じ効果)コンボボックス)。

メッセージボックスがモーダルであることを修正するにはどうすればよいですか?サンキューダモをクリアせずにコンボボックス内のアイテムを一覧表示し続けるコンボボックスを修正するにはどうすればよいですか?

フォームを常に上に作成するタイマー

// Restore the form.
this.Visible = true;
this.TopMost = true;
this.WindowState = FormWindowState.Maximized;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
this.Show();

メッセージボックス

MessageBox.Show(this,"hello world", "myApplication");
4

1 に答える 1

1

メッセージボックスを表示する前にタイマーを無効にし、再度有効にします。

timer1.Enabled = false;
MessageBox.Show(this,"hello world", "myApplication");
timer1.Enabled = true;

もちろん、これはメソッドに含めることができるため、コードを複製する必要はありません。

public void ShowMessage(string title, string message)
{
   timer1.Enabled = false;
   MessageBox.Show(this,message, title);
   timer1.Enabled = true;
}

はブロッキングコマンドであるためMessageBox.Show、タイマーはメッセージボックスが閉じられた後にのみ再度有効になります

于 2013-01-04T13:19:20.033 に答える