C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 119 を表示中)
■69644 / )  CheckBoxのチェックマークの反映
□投稿者/ ザイーガ (1回)-(2014/01/16(Thu) 15:02:49)

分類:[VB.NET/VB2005 以降] 

こんにちは。
CheckBoxのCheckedChangedイベントで、RichTextBoxのデータを処理するような処理を行っています。
ただ、この処理は数秒かかることもあり、例えばチェックボックスをクリックしても、
この処理が終了しないと、GUI上のチェックボックスのチェック表示が反映されません。
このため、利用者がチェックボックスのチェックがうまく反映されていないと誤解し、
何度もチェックボックスをクリックしてしまう恐れがあります。

そこで、色々と試していくうちに、チェックボックスのEnabled属性を切り替えることで
チェックボックス表示が反映されることが分かりました。
チェックボックスのチェック変更後の処理時にはチェックボックスのクリックを無効にしたいので、
例えば以下のようなコードを書いてみました。
(数秒かかる処理の代わりに、Thread.Sleepを使っています。)

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
    CheckBox1.Enabled = False
    System.Threading.Thread.Sleep(2000)
    CheckBox1.Enabled = True
End Sub

これだと、クリック後のチェック表示は切り替わるのですが、
チェックボックスのEnabled = Falseの時にチェックボックスをクリックすると、
その時のチェックが無効にならず、Enabled = Trueに戻った後にまたチェック処理が走ってしまいます。

今回のケースで、チェックボックスのEnabled = Falseの時のクリックは無効にできないものでしょうか?

返信 編集キー/


管理者用

- Child Tree -