DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォームの継承について

環境/言語:[WinXP、VB2005]
分類:[.NET]

VB2005で開発を行っています。
フォームの継承についての質問です。

現在コントロールをたくさん貼り付けたフォームがあるのですが
このフォームに似たフォームを作りたいと思っております。

この場合にフォームを継承して新たなフォームを作成したい
と思っているのですが、
不要なコントロールとそのコントロールに紐付くイベントは
どのようにして継承されないようにしたら良いのでしょうか?

普通に継承をするとコントロールも継承されてしまい、
そのコントロールを削除することができません。

ぜひご教示頂けませんか?
よろしくお願いいたします。
  • 題名: Re[1]: フォームの継承について
  • 著者: まどか
  • 日時: 2008/04/22 2:27:04
  • ID: 21900
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
継承は is a の関係です。
人間クラスを継承した太郎クラスや花子クラスが is 人間 であるように等価であることを言います。

コウさんの書かれたことは単なる生産性を目的としたソースコードの流用です。
ユーザーコントロールという方法もありますが、いずれにしろそれは抽象化設計した結果です。
設計であり手段ではないことを理解してください。
下記をまず一通りお読みください。
http://msdn2.microsoft.com/ja-jp/library/b86b82w0(VS.80).aspx
http://msdn2.microsoft.com/ja-jp/library/27db6csx(VS.80).aspx
■No21898に返信(コウさんの記事)
> VB2005で開発を行っています。
> フォームの継承についての質問です。
>
> 現在コントロールをたくさん貼り付けたフォームがあるのですが
> このフォームに似たフォームを作りたいと思っております。
>
> この場合にフォームを継承して新たなフォームを作成したい
> と思っているのですが、
> 不要なコントロールとそのコントロールに紐付くイベントは
> どのようにして継承されないようにしたら良いのでしょうか?
>
> 普通に継承をするとコントロールも継承されてしまい、
> そのコントロールを削除することができません。
>
> ぜひご教示頂けませんか?
> よろしくお願いいたします。


継承元のフォームにプロパティ付けといて、そのプロパティを
変更したタイミングでDispose()で消して行っては駄目なんですか?
もしくはVisible = falseで見えなくするとか。
■No21909に返信(obaQさんの記事)
> 継承元のフォームにプロパティ付けといて、そのプロパティを
> 変更したタイミングでDispose()で消して行っては駄目なんですか?
> もしくはVisible = falseで見えなくするとか。

先に書いたようにそれは結果としての手段ですね。

問題は「似たフォーム(クラス)」と「基底フォーム(クラス)」は違うという認識です。
それをふまえたうえで継承という言葉が出てきているのなら問題ありません。
■No21911に返信(まどかさんの記事)
> 先に書いたようにそれは結果としての手段ですね。

激しく賛成ですね。

そう考えると Form 自体を継承するというケースはかなり少ないです。
Control が増えていく一方のパターンでないと使う意味がないです。

良くて UserControl ですが、多くはまったく別の Form を作った方が良いことが多いです。
GUI は無理に共有しようとすると機能追加しにくくなって本末転倒になります。

# なんでもかんでも 「継承」 って風潮は今だにあるのですね...
# 継承なんて Implements より出番が少ないんですが。
皆さまへ

継承についてとても勉強になりました。
フォームは継承しないことに致します。

共通の処理はクラスに設け、
フォームの継承は考えないことにします。

ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板