- - PR -
複数フォームでの共通処理
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-11 20:25
>これは、Form に関係ないロジックですね。
>Form には GUI に関すること以外はあまり記述しません。 それでは、GUIに関すること以外のメソッドは、どこに定義するべきなのでしょうか? ちなみに、使いまわしたい関数は A.入力された文字列の、OK/NGを判定するメソッド B.GUIに表示するデータを作成する C.ツールバーに関する処理(全ての画面で全く同じ表示内容/処理になります。) Aは、グローバル関数的な関数のイメージです。 全Formで全く同じ処理を行う関数もあれば、一部Formのみ異なる処理を行う場合もあります。 Bは、GUIに表示するデータ(ADO.NET)を取得する関数です。 (SQL発行や、DataTable⇔DataGridのやりとりなどの処理) ADO.NETオブジェクトを触る部分の処理は、全Formで同じ処理を行う関数もあれば、一部Formのみ処理が異なるようなこともあります。 全く同じ処理だったり、一部処理が異なる場合があるので、Formのベースクラスを作成して、その他のFormはベースFormを継承するようにしたいと考えていました。 上記の3つの関数は、どこで定義すればよいのでしょうか? 質問が上手くできなくてすいません。。。 | ||||||||||||
|
投稿日時: 2006-01-11 20:43
例 : 検証用のクラスに static (Shared) に実装する。
例 : データを生成するクラスにメソッドを実装する。 このメソッドは作成された結果のみを返し、Form で受け取れば良い。
例 : ツール バーを継承したコントロールを使用し、ある程度共通化を図る。 あくまで一例です。 仕様次第で継承を使うべき場合もあるでしょう。 継承を使ったとしても、抽象メソッドがあるおかげである程度柔軟性はあります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-01-12 10:26
継承を使っていいのは、子クラスが親クラスそのものである時だけです。
ですので、Gunsさんの初めの書き込みの
はだめです。frmLeftはfrmMainではないからです。
これはベースFormに与える意味によってはアリです。 例えばベースFormに"このプログラム内のForm"という意味を与えれば、frmLeft,frmRight,frmMainは"このプログラム内のForm"ですので、ベースFormを継承することになります。 そして、"このプログラム内のForm"が持つ機能はベースFormに書くことになります。 |