misc.log

日常茶飯事とお仕事と

ComboBoxを継承して独自インターフェイスを実装すると

ComboBoxを継承した上に、独自のインターフェイスを継承して作成したコントロールが、貼り付け先のフォーム上において、デザイン画面で位置移動できないという異常事態が発生している。
位置移動は、Locationプロパティを直接操作すれば出来るのだが、マウスによるドラッグ移動が行えない。というか、コントロールを選択しても、選択中という枠すら出ない。なぜ?
ちなみに冒頭部分のコードは下記の通り。

Public Class ComboBox
    Inherits System.Windows.Forms.ComboBox
    Implements IControlBase

IControlBaseというインターフェイスは、

 Property Style() As Style
Property CustomizeStyle() As Boolean
Sub RefreshStyle()

の3つのメソッド、プロパティを定義しているだけなんだが。なんで?

...原因がわかった。ComboBoxが持っているStyleプロパティとインターフェイスのStyleというプロパティがかぶっていたのが原因のようだ。ImplementするStyleプロパティの名称を「Style1」などと変更することで解決した。

 _
Public Property Style1() As Style Implements IControlBase.Style
    Get
        Return _style
    End Get
    Set(ByVal styl As Style)
        _style = styl
    End Set
End Property

こんな感じ。Styleプロパティの実体名がインターフェイスの定義と異なるが、末尾のImplements句の後、IControlBase.Styleが指定されていればOK。