ネタ元はこちらです。
無効中のボタンをマウスクリックイベントを受けてしまう http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=713489&SiteID=7
最終的に解決に至ったコードは次の通りです。
private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false;
for (int i = 0; i < 5000; i++)
{
textBox1.Text = i.ToString();
textBox1.Refresh();
}
Application.DoEvents();
button1.Enabled = true;
}
Application.DoEvents()は、キューに溜まっているメッセージを処理するために使うものだということは知っていましたが、上のコードのように溜まっているメッセージを結果的に空撃ちさせて消してしまう(処理させない)使い方は、自分的に目から鱗でした。みんなは常識かもしれないけど。(^^;