- - PR -
複数フォームでの共通処理
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-01-11 17:53
C#の1つのプロジェクトの中に、「frmMain,frmLeft,frmRight」の3つのフォームがあります。
frmLeft,frmRightは、frmMainと見た目がほぼ同じで、同じような処理を行うことが多々あります。 上記3つに同じ処理を記述するのは効率が悪いので、frmLeftやfrmRightはfrmMainを継承するようにしたいのですが、formクラスの継承が上手くできませんでした。 #class frmLeft : frmMain のようにすると、frmLeft上にfrmMainのテキストボックス やボタン等が表示されてしまいました。 同じような画面が複数ある場合、どのようにすれば同じようなコードをたくさん書かずにすむのでしょうか? | ||||
|
投稿日時: 2006-01-11 18:04
こんにちは。
frmMain,frmLeft,frmRight から共通部分を括りだした frmBase を継承とか、 「同じような処理を行う」部分だけ別の処理クラスにして、呼び出すとかはどうでしょうか。 _________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 2006-01-11 18:07
全く同じではなく「同じような」であれば、インターフェイスの出番ですね。 全く同じ方に同じようなことを書くのもアレなので、前スレのリンクです。 FORMオブジェクトについて _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-01-11 18:09
同じ処理があるというだけで継承を使うのはよくありません。
同じ処理は別のクラスにまとめて、おのおののformでnewして呼び出せばよいでしょう。 _________________ たつごろー codeseek こみゅぷらす | ||||
|
投稿日時: 2006-01-11 18:12
他に、コントロールを作るのも良いかもしれません。
これは、3つのフォームに似たような動作をさせたいが、コントロールのサイズや配置が変わるような場合に便利です。 | ||||
|
投稿日時: 2006-01-11 18:29
みなさん、回答ありがとうございます。
インタフェースについてはまだ知識が乏しいのですが、私がやりたいことを実現するには一番いい方法かもしれません。(引き続き勉強します。) もしくは、たつごろーさんがおっしゃるように、処理クラスを作成すべきかもしれません。 ちなみに、同じような処理をする場合や、まったく同じ処理をする場合もあります。 (文字列を特定フォーマットに変換するメソッドなど) VC++を触っていた時に、formではないクラスの継承を一度やったことがあり、同じようなことができないかなぁと思って質問しました。 | ||||
|
投稿日時: 2006-01-11 18:55
そのメソッドに関しては、継承で共有すべきシナリオでないですね。 プログラムの各構成単位は、より疎結合にする事が理想ですが、継承は「最も密結合」です。 _________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 2006-01-11 19:06
これは、Form に関係ないロジックですね。 Form には GUI に関すること以外はあまり記述しません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |