• 締切済み

VB6のロストフォーカス時の処理をキャンセルしたい。

textbox1 textbox2 textbox3 があったとします。 textbox1には ロストフォーカス時にエラー処理が入っています。 登録、終了ボタンがあり、登録ではエラーではじいていいのですが、 終了ボタンの場合、エラー処理を回避(キャンセル)する方法はないでしょうか? こんな感じで 終了.click textbox1.lostfocus の処理をキャンセル end

みんなの回答

  • fantom
  • ベストアンサー率31% (30/94)
回答No.3

終了ボタンのクリックイベントよりも、 先にマウスダウンイベントを発生させれば テキストのロストフォーカスよりも優先されるようです。 マウスのダウンアップイベントでフラグ立てて制御すれば、 擬似的に回避は可能かと思います。 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)
回答No.2

データのチェックを Validateイベントに記述してみてはいかがでしょう 終了ボタンのCausesValidationプロパティをFalseに設定すれば終了ボタンはいつでもクリックできます 本当に終了して良いかのメッセージボックスなどを表示するなどは必要かもしれませんが …

  • Bickyon
  • ベストアンサー率41% (42/101)
回答No.1

textbox1にFocusがある状態で、終了ボタンをクリックした場合、クリックイベントよりロストフォーカスイベントの方が先に発生します。 なので、ロストフォーカスの処理をキャンセルすることはできません。 よって、ロストフォーカスにエラー処理を書くのではなく、他のコントロールのゴットフォーカスで、textbox1のエラーチェックを行うようにしましょう。

関連するQ&A