2012-01-09 10 views
0

Windowsフォームコンボボックスを継承するクラスがあります。 アイテムが追加されたときにクラスを追加する必要がありますが、そのようなイベントはありません。 したがって、余分な作業を行うアイテムを追加したり消去したりするメソッドを追加しました。 開発者が項目に直接アクセスして項目に追加するのを避けるため、Itemsプロパティをオーバーロードして例外をスローしました。VSデザイナーで異なるコードを実行します

これはVSデザイナーを除いてすべて問題なく動作します。デザイナはItemsプロパティにアクセスしようとし、例外を取得してエラーを表示します。

VSデザイナーがコードをコンパイルするときに定義された定数がありますか?これは、タスクに最も適しているようです。

+1

「Items」プロパティがオーバーロードされていると言ったときに、* shadowed *を意味しますか? –

+0

これはvb.netですので、_shadow_は_overload_ –

+1

です。いいえ、それらは同じものではありません。オーバーロードでは、新しいメンバーには同じ名前だが、別のシグネチャ*(通常はメソッド)が提供されている。シャドーイングは、新しいメンバーに既存のものと同じ*シグネチャを提供していますが、古いものを上書きしません。 –

答えて

1

Control.DesignModeのプロパティをお探しですか?正直言って、それは普通のComboBoxのように使用することができないComboBoxサブクラスを持つデザインの観点から素晴らしいとは言えません...もしあなたが本当にただを隠した場合(または影)Itemsプロパティを別のものに変更すると、としてと表示され、ComboBoxと表示されると、元のItemsプロパティにアクセスできます。あなたが何をしているのかは不明です実際にはここでやろうとしています。

+1

私がしようとしているのは、アイテムが追加されたときに余分な仕事をすることができるコンボボックスがあることです。このような出来事があった場合、私はこれを必要としません。 はい、それをコンボボックスとして参照する人は、これを回避することができます。しかし、彼らが意図的にいたずらをしない限り、誰もコンボボックスと呼ぶ理由はありません。フォームのメンバーは、継承するクラスのインスタンスです。 これは理想的ではないことを知っていますが、ほとんどの場合、開発者がItemsプロパティを使用できないことを忘れることなく動作するものを見つけることを試みています。 –

関連する問題