あるループ内の一箇所に、そのときにボタンをクリックされたくない(Button_Clickイベントを発生させたくない)処理をしている時間帯があり、
その間だけEnableプロパティをFalseにすると、ループの間に無効、有効を繰り返してボタンがチカチカするので、その間Nameプロパティでコントロール名自体を変えてみたらどうかと試みたのですが、Nameを元に戻す時に当然宣言されてないNameなのでエラーがでてしまいうまくいきませんでした。何か別の解決案はないでしょうか。アドバイスおねがいします。
ループの間に無効、有効を繰り返して・・・。
なぜ?
そんなことせずに、
ループの始まる前に無効、抜けたら有効でいいんじゃないの?
ユーザは、何回目の点滅の前でボタンを押す!とか判断できるの?
ループに入る直前でEnableをFalseではだめなんですか?
どんなループをさせているかわからないとアドバイスが出来ないよ。
後、環境も
失礼しました。
DO
処理A(ボタン有効にさせておきたい時間帯)
|
処理B(ボタンをクリックされたくない時間帯)
|
処理C(ボタンを有効にさせておきたい時間帯)
LOOP
このような感じでLOOPの中に一部分だけボタンを押されたくない場所があります。環境はVB.NETです。
別に「クリックした」から「クリックした処理をする」という風に決まっているわけではないのでは?
→クリックしても処理をしないようにすればいいだけだと思われ。
→激しくガイシュツ…
Option Explicit
Private blnClickOK As Boolean
Private Sub Command1_Click()
If blnClickOK Then
処理
End If
End Sub
Private Sub Form_Load()
Do
blnClickOK = True
処理1
blnClickOK = False
処理2
Loop
End Sub
こんな感じにすれば良いのでは?
ありがとうございました。即解決しました。すごくアホでした。
また実は処理BはTCP Listenerの処理をしており、クライアントからの接続要求が無いと処理Bでずっと停止しており、ずっとフラグが立ったままという新たな問題が起こりましたが、質問のタイトルからまた別の話なので別のスレにしようと思います。回答くださったみなさんありがとうございました。
>VBでがりがり書かせてさん
>さくらさん
>ガッ
解決チェック忘れです。
もう解決されているようなので、余計なことかもしれませんが
ちらちらするのだけが気になるのならば
ボタンをFlameなどに貼り付けて(各々別々に)
Flameの方のenableを切り替えれば、どうかなぁ・・・
とちょっと思いました。
オレはこうしてる、というムダ話
(基本はさくらさんと同じ)
Private Sub Command1_Click()
If blnClickOK=False Then Exit Sub '処理抜け
以下ボタンが押された時の処理
End Sub
ツイート | ![]() |