- PR -

[C#]コントロールのプロパティ固定(継承)

1
投稿者投稿内容
うちうせん
ベテラン
会議室デビュー日: 2003/08/08
投稿数: 96
お住まい・勤務地: 福岡県
投稿日時: 2007-11-02 16:34
あるコントロールを継承して新しいコントロールを作成する場合、継承元のコントロールのあるプロパティ値を固定し、変更できないようにすることはできるでしょうか?
たとえばTreeViewを継承したTreeViewExを作成した場合、AllowDrapプロパティをTrue固定でIDEのプロパティウィンドウからも(できれば非表示)ソース上からも変更不可にする感じです。
可能であれば方法を教えてください。

[環境]
・WindowsXP
・VisualC# 2005
_________________
by うちうせん
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2007-11-02 16:52
コード:
    class TreeViewEx : System.Windows.Forms.TreeView
    {
        public TreeViewEx() : base()
        {
            base.AllowDrop = true;
        }

        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
        public override bool AllowDrop
        {
            get
            {
                return base.AllowDrop;
            }
            set
            {
            }
        }
    }

うちうせん
ベテラン
会議室デビュー日: 2003/08/08
投稿数: 96
お住まい・勤務地: 福岡県
投稿日時: 2007-11-06 09:03
返答ありがとうございます。
burton999さんのコードで実現できました。

やっぱりクラスを継承する場合、親クラスのプロパティ等を子クラスに継承はできても、親クラスのプロパティ等を子クラスで無効化することってできないんでしょうか?
sealed修飾子を使って1つクラスをはさんでするとかになるんでしょうか・・・

TreeViewクラス
↓継承
DummyTreeViewクラス(ここでAllowDropをsealedつきでオーバーライド)
↓継承
TreeViewExクラス
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-11-06 09:22
引用:

うちうせんさんの書き込み (2007-11-06 09:03) より:

やっぱりクラスを継承する場合、親クラスのプロパティ等を子クラスに継承はできても、親クラスのプロパティ等を子クラスで無効化することってできないんでしょうか?
sealed修飾子を使って1つクラスをはさんでするとかになるんでしょうか・・・


似たような話題が過去にも何度か出ていますが、設計からするとよろしくないと思います。 それはそうと burton999 さんの方法で良いと思いますけどね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
うちうせん
ベテラン
会議室デビュー日: 2003/08/08
投稿数: 96
お住まい・勤務地: 福岡県
投稿日時: 2007-11-06 11:20
回答ありがとうございます。

実装はburton999さんの方法を使わせてもらいました。
仕様的にできるのかちょっと気になったので追加で質問しました。
1

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