- - PR -
イベントのフック
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-05-14 12:58
C#でこんなことは可能でしょうか?
(仕様) 1.テキストボックスを使って1以上4以下の数字を入力する制限をしたい 2.Validatingイベントでチェックする。 3.しかし、複数のフォームで使うロジックなので、フォームごとにイチイチ 記述したくない。 4.なので、テキストボックスを継承して新しいクラス(コントロール)を作る public class newTextBox : System.Windows.Forms.TextBox 5.このnewTextBoxクラスの記述の中にチェックロジックを書きたい 6.フォームで使用する時は、新しく作ったコントロールを貼り付けるだけで チェックロジックが動作するようにしたい。 newTextBoxクラスの記述の中でValidatingイベントをフックするような イメージです。特に仕様の6番目は重要視しています。 上記のようなことは可能なのでしょうか? 可能であればどのような記述をすればよろしいでしょうか? よろしくお願いします。 | ||||||||
|
投稿日時: 2004-05-14 13:30
可能です。
仕様通り、順位記述すればいいです。 ん〜、いったい、何を困っているのか、それがわからなくて困ってしまった。 未検証、直書き 〜は省略記号 class MyTextBox : System.Windows.Forms.TextBox { 〜 protected void OnValidating(〜) // overrideがいるかも { // 自分の検証用処理 base.OnValidating(〜); } } イベントを発生させる為に、「On〜」メソッドを呼ぶことが決められています(MSDN)。ですから、ベースクラスでイベントが発生するときには必ずOn〜メソッドが呼ばれます。それであるなら、OnValidatingメソッドで先にチェックしてから、それを使う開発者にイベントを通知してやればよい、というわけです。 | ||||||||
|
投稿日時: 2004-05-14 14:15
はい。私もそう思ったのですが、「オーバーライドする適切なメソッドが
見つかりませんでした」のメッセージでエラーになっていたのです。 しかし、今が気が付きました。 OnValidatingメソッドの引数が間違っていました。 それが原因でした。 お騒がせしました。 |
1