- PR -

1つのイベントを複数のプロシ−ジャで処理

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-09-19 20:00
引用:

じゃんぬねっとさんの書き込み (2007-09-18 17:59) より:

Validating イベントで行っているということは各プロシージャを明確に呼び出しているということにならないでしょうか?


最初はそのような方法をとっていると思ったわけですが... (^-^;)

引用:

むーみんさんの書き込み (2007-09-18 17:30) より:

項目数が多いので、このようにイベント処理を実装したいのですが、


ところで "項目数が多いので、このように" とありますが、なぜこの方法が良いと思ったのでしょうか? メリットというメリットが思いつかなかったです。 (だからどのあたりが "ので" なのかがわかりませんでした) 参考までにご教示頂くことはできませんか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
むーみん
常連さん
会議室デビュー日: 2005/06/23
投稿数: 41
投稿日時: 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 ]

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