2016-06-14 5 views
1

CausesValidationで[キャンセル]ボタンをするためにタブ移動するとき、私は、以下の単純化された説明に似たような状況を持って発射ありません整数。イベントtxtQty_Validateは、ユーザーの入力を検証し、フォーカスを変更する前にエラーを修正するために使用されます。これは、txtQtyを除いて、フォーム上の他のすべてのコントロールと大きく機能します。これは、のフォームのボタンがプロパティーを取り消すためであると仮定します.CausesValidationは必然的にfalseに設定されています。従ってにtxtQtyからユーザタブは(そののTabIndex次ある)キャンセルボタンときに適切txtQty_Validationイベントをトリガしません。VB6 _Validationイベントは= Falseの

私の最初の本能は、単純に(私はすでにTABキーとしてRETURNキー振る舞いをするために使用しています)txtQty_KeyPressイベントに行くとTABキーをキャプチャし、一時的にCausesValidationを切り替えましたプロパティを使用して、txtQty_Validationイベントを発生させることができます。しかし、それは私が思っていたほど簡単ではないように、のTABをキャプチャしているようです。

提案がありますか?私はFormを作成する誰もがこのような状況に遭遇したのはこれが初めてではないと思います。

おかげ

答えて

1

[キャンセルGotFocusイベントでこれを試みることができます。

Dim b As Boolean 

Call txtQty_Validate(b) 
If b Then txtQty.SetFocus 

あなたは上司です。この

Private Sub txtQty_Validate(Cancel As Boolean) 
    If Not IsNumeric(txtQty.Text) Then 
     Cancel = True 
    End If 
End Sub 
+0

パーフェクトおかげのようなものを持っていると仮定すると! – Rhurac

+0

これは、 'Cancel'ボタンで' CausesValidation = False'の目的を完全に無効にします。今ユーザが 'txtQty'にばかばかしいことを入力すると、フォームをキャンセルすることはできません!これは単に迷惑なものです。 。 。ユーザー:_はい、数量は数字ではありませんが、フォームをキャンセルして今入力したものを元に戻したいので気にしません。私を放してください!_ – wqw

関連する問題