- PR -

Validatingイベントの発生

1
投稿者投稿内容
未記入じゃけんど
ベテラン
会議室デビュー日: 2004/11/09
投稿数: 65
お住まい・勤務地: Osaka City
投稿日時: 2006-03-07 13:12
VB2003で
フォーム上にテキストボックスとボタンが存在します
テキストボックスのValidatingイベント発生の条件なのですが、
ボタンのCauseValidation をfalseにした場合は、ボタン押下時にはテキストボックスのValidatingは発生しませんが
フォームのCauseValidationをfalseにしても、フォームのコントロールボックスの「×」ボタンを押下したときに発生します。
どうすれば発生しなくなるのですか?知ってる方教えてください。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-07 14:12
引用:

未記入さんの書き込み (2006-03-07 13:12) より:

フォームのCauseValidationをfalseにしても、フォームのコントロールボックスの「×」ボタンを押下したときに発生します。
どうすれば発生しなくなるのですか?知ってる方教えてください。


以下のように ActiveControl プロパティを見ます。

コード:

    Private Sub Button1_Validating(...) Handles Button1.Validating
        If Me.ActiveControl Is Me.Button1 Then
            Return
        End If

        '/ TODO : ここに検証処理
    End Sub


面倒なのでカスタム コントロールで、この条件をクリアした MyValidating イベントを実装すると良いでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入じゃけんど
ベテラン
会議室デビュー日: 2004/11/09
投稿数: 65
お住まい・勤務地: Osaka City
投稿日時: 2006-03-07 14:44
ありがとうございます。

すいません。
正確には、ボタンを押下したときではなく、フォームを閉じようとした時に発生するValidatingイベントをキャンセルしたいのです。
ボタン押下時にのキャンセルは実装できています。
Validatingイベント内で、テキストボックスの内容をチェックしている(内容がおかしい時はメッセージボックスを表示)のですが、画面を閉じようとしている時に、Validatingの入力チェックが走ってしまい。Closingがキャンセルされてしまいます。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-07 14:47
引用:

未記入さんの書き込み (2006-03-07 14:44) より:

正確には、ボタンを押下したときではなく、フォームを閉じようとした時に発生するValidatingイベントをキャンセルしたいのです。


Button を押下した時のイベントを書いたつもりはありません...

また、先のコードはあくまでも例です。
もし、これが TextBox なのであれば TextBox で実装することになります。

だから、

> 面倒なのでカスタム コントロールで、この条件をクリアした MyValidating イベントを実装すると良いでしょう。

と書きました。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-03-07 21:37
 「CausesValidation = false のコントロールなのに Validating イベントが発生するのはバグだ!」と言ったら、「by design (仕様です)」と返されました(--;

 Form.Closing で、e.Canceled = false としてください。
CausesValidation を false にした時の動作について

VS2005β ですが、VS.NET2003 でも同じだと思います。
1

スキルアップ/キャリアアップ(JOB@IT)