- - PR -
1つのイベントを複数のプロシ−ジャで処理
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-09-19 20:00
最初はそのような方法をとっていると思ったわけですが... (^-^;)
ところで "項目数が多いので、このように" とありますが、なぜこの方法が良いと思ったのでしょうか? メリットというメリットが思いつかなかったです。 (だからどのあたりが "ので" なのかがわかりませんでした) 参考までにご教示頂くことはできませんか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-09-19 21:11
じゃんぬねっとさん、自分のつたないプログラミングを説明するようで
恐縮なのですが、 私は、これまで一Validatingイベントに対し一メソッドで、入力内容を チェックしていました。 具体的な方法は、Handles句で、メソッドに結びつけていました。(というか自動生成でできるメソッドです。) 各メソッドにエラーチェックを実装して、エラーがあるようなら、例外を生成して そのエラー内容を各テキストごとにエラープロバイダに表示していました。 以下のような感じのメソッドを作成し、 仮に3個のTextBoxがあれば、それぞれのValidatingイベントに対して 3つのメソッドを作成していました。 Private Sub txt1_Validating(...) Handles txt1.Validating Try If txt1.Text.Trim.Length = 0 Then Throw New 例外クラス(GetMsg("必須入力項目です。")) '-------(1) End If If clsエラーチェック.method桁数チェック(txt1.Text) >txt1.MaxLength Then Throw New 例外クラス(GetMsg("入力可能桁数を超えています")) '-------(2) End If If エラーチェック.method禁則文字チェック(txt1.Text) Then Throw New 例外クラス(GetMsg(2)) '-------(3) End If Catch testEx As 例外クラス 'txt1にエラープロバイダを表示 e.Cancel = True Catch ex As Exception 'メッセージボックスを表示 e.Cancel = True End Try End Sub しかし、30も項目があり、エラーチェック内容はほとんど同じなので (←すみません、抜けてました)、処理をまとめたくなりました。 (A) 全てのTextBoxは上記の(2)(3)のチェックが必要・・・30項目ほど (B) あるTextBoxは上記の(1)のチェックが必要。・・・5項目ほど (C) 他に固有のチェックロジックが必要なTextBoxが少し。 という具合でしたので、わたしが導き出してしまった方法は、 まず(2)(3)のチェックを実装した (A)用のメソッドを作成し、全てのTextBoxのHandles句を追加する。 そして、(1)のチェックのみ実装した(B)用のメソッドを別に作成()し、 必要な項目の分だけHandles句を追加する。 そして、(C)用には必要なTextBoxの分だけ、1イベントに対し1メソッドの規則で作成する。 という方法でした。 で、処理順序は(A)、(B)、(C)の順に流れてくれればいいと思いました。 これで、(B)(C)のメソッドの最初に、if e.cancel then exit sub とかけば、うまくいくと思ったのです。。。 [ メッセージ編集済み 編集者: むーみん 編集日時 2007-09-20 09:08 ] |