- 締切済み
VB6のロストフォーカス時の処理をキャンセルしたい。
textbox1 textbox2 textbox3 があったとします。 textbox1には ロストフォーカス時にエラー処理が入っています。 登録、終了ボタンがあり、登録ではエラーではじいていいのですが、 終了ボタンの場合、エラー処理を回避(キャンセル)する方法はないでしょうか? こんな感じで 終了.click textbox1.lostfocus の処理をキャンセル end
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- fantom
- ベストアンサー率31% (30/94)
終了ボタンのクリックイベントよりも、 先にマウスダウンイベントを発生させれば テキストのロストフォーカスよりも優先されるようです。 マウスのダウンアップイベントでフラグ立てて制御すれば、 擬似的に回避は可能かと思います。 Dim bcancel As Boolean Private Sub Command1_Click() Text1.Text = "終了処理" End Sub Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) bcancel = True Call Command1_Click End Sub Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) bcancel = False End Sub Private Sub Text1_LostFocus() If bcancel = False Then Text1.Text = "エラー処理" End If End Sub
- redfox63
- ベストアンサー率71% (1325/1856)
データのチェックを Validateイベントに記述してみてはいかがでしょう 終了ボタンのCausesValidationプロパティをFalseに設定すれば終了ボタンはいつでもクリックできます 本当に終了して良いかのメッセージボックスなどを表示するなどは必要かもしれませんが …
- Bickyon
- ベストアンサー率41% (42/101)
textbox1にFocusがある状態で、終了ボタンをクリックした場合、クリックイベントよりロストフォーカスイベントの方が先に発生します。 なので、ロストフォーカスの処理をキャンセルすることはできません。 よって、ロストフォーカスにエラー処理を書くのではなく、他のコントロールのゴットフォーカスで、textbox1のエラーチェックを行うようにしましょう。