- PR -

Validatingのe.Cancelのキャンセル

1
投稿者投稿内容
くー
ベテラン
会議室デビュー日: 2005/02/07
投稿数: 86
投稿日時: 2005-05-19 12:09
すいません初歩的な事かもしれません。
Validatingの中でe.Cancel = trueにした場合に制御できる事は嬉しいのですが
常にクリックさせたいボタンまで効かなくなってしまうのに困ってます。

プロパティで設定するのかClick時にコード記述するのか・・・
どうすればいいのでしょうか?



じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-05-19 12:39
こんにちは、じゃんぬ です。

引用:

Validatingの中でe.Cancel = trueにした場合に制御できる事は嬉しいのですが
常にクリックさせたいボタンまで効かなくなってしまうのに困ってます。



  if (! btnCancel.Focused) {
    e.Cancel = true;
  }

のようにしましょう。



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
くー
ベテラン
会議室デビュー日: 2005/02/07
投稿数: 86
投稿日時: 2005-05-19 14:28
じゃんぬさん、ありがとうございます。

private void text1_Validating(・・・){
  if(btnCancel.Focused){e.Cancel = false; return;} // 追加 
if(text1.Text == "") {
MessageBox("値がありません");
             e.Cancel = true; return;
             }
}

テキストを抜ける時にボタンをクリックした場合、フォーカス移動してから
Validatingが走るんですね。勉強になりました。
この場合だともうe.Cancel = falseも要らないかなと思いました。

でもtext1_Validatedの使い方が見えてこなくなってきました。
Validatedでtext1の値が入ってる仮定で処理をしてたのですが上の追加をすると
値がなくても走ってしまいますからね。
なのでValidatingの最後に処理の記述を移動させました。

ValidatingでチェックしてValidatedで実行とは行かないみたいですね・・・^^;
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-05-19 14:38
こんにちは、じゃんぬ です。

引用:

でもtext1_Validatedの使い方が見えてこなくなってきました。


こういう使い方さえしなければ、普通に使えますよん。

引用:

Validatedでtext1の値が入ってる仮定で処理をしてたのですが上の追加をすると
値がなくても走ってしまいますからね。
なのでValidatingの最後に処理の記述を移動させました。
ValidatingでチェックしてValidatedで実行とは行かないみたいですね・・・^^;


Leave で値の編集を行って、Validating でメッセージを出すとか、
Validating で値の編集は行うけど、ある条件下で動く自作 Validate イベントでチェックするとか...
後者の場合は、カスタム コントロールになりますけども。



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
くー
ベテラン
会議室デビュー日: 2005/02/07
投稿数: 86
投稿日時: 2005-05-19 14:55
>こういう使い方さえしなければ、普通に使えますよん。

本当その通りですよね。
こればっかりは使って行って慣れるしかないなと思いました。

余談ですがサイト見させて頂きました。
若い方ですね!
いろいろな言語も触れられてるのですごいの一言です。
歳は関係ない世界だと思ってますので(^^;)また見かけたら
アドバイスよろしくお願いしますm(__)m



[ メッセージ編集済み 編集者: KUMA 編集日時 2005-05-19 14:55 ]

[ メッセージ編集済み 編集者: KUMA 編集日時 2005-05-19 14:56 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-05-20 20:03
引用:

if (! btnCancel.Focused) {
  e.Cancel = true;
}
のようにしましょう。


ヾ(^_^;つっこみ
btnCancel.CausesValidation = false;←フォームデザイナのプロパティで設定しましょう。


引用:

テキストを抜ける時にボタンをクリックした場合、フォーカス移動してからValidatingが走るんですね。


思いこみは厳禁。マウスクリックと、[TAB]キーとで発生する順番が違います。MSDNできちんと確認しましょう。
参考スレッド
# 嗚呼!フィードバックに誤記発見orz
_________________
1

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