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

自作クラスをフォームのプロパティにしたいのですが・・・

環境/言語:[使用言語(VB.NET)]
分類:[.NET]

VB.NET2003で開発をしていますが、Formを継承したカスタムフォームに
プロパティを追加しようと思います。このとき、プロパティの型として
自作クラスを指定しても値が反映されないのですが、どうしてでしょう?
ちなみに自作クラスはSystem.Drawing.Color型のプロパティが2つだけの
シンプルなものです。(今後、もう少し、増える予定)
> プロパティの型として自作クラスを指定しても値が反映されないのですが、

GetとSetの中はどうなっているのでしょうか?

文章からは
Public Property Hoge As HogeClass
と書くだけで値が存在すると思われているようにもお見受けしますが。。。
■No17284に返信(まどかさんの記事)
>>プロパティの型として自作クラスを指定しても値が反映されないのですが、
>
> GetとSetの中はどうなっているのでしょうか?
>
> 文章からは
> Public Property Hoge As HogeClass
> と書くだけで値が存在すると思われているようにもお見受けしますが。。。

まどかさん返信ありがとうございます。
ソースを載せますのでご教授願います。

- プロパティに設定したいクラス --------------------------------

<Serializable(), StructLayout(LayoutKind.Sequential), TypeConverter(GetType(CustomClassConverter)), ComVisible(True)> _
Public Class ControlColors

Private prpFocusBackColor As System.Drawing.Color = System.Drawing.SystemColors.Control
Private prpFocusForeColor As System.Drawing.Color = System.Drawing.Color.Black

Public Sub New()
MyBase.new()
End Sub

Public Sub New(ByVal backColor As System.Drawing.Color, ByVal foreColor As System.Drawing.Color)
FocusBackColor = backColor
FocusForeColor = foreColor
End Sub

<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
Public Property FocusBackColor() As System.Drawing.Color
Get
Return prpFocusBackColor
End Get
Set(ByVal Value As System.Drawing.Color)
prpFocusBackColor = Value
End Set
End Property

<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
Public Property FocusForeColor() As System.Drawing.Color
Get
Return prpFocusForeColor
End Get
Set(ByVal Value As System.Drawing.Color)
prpFocusForeColor = Value
End Set
End Property

End Class
---------------------------------------------------------------

上記のクラスを下記のように設定しています。

---------------------------------------------------------------
<System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Visible) _
, System.ComponentModel.Localizable(True)> _
Public Property FormColors() As ControlColors
Get
Return prpFormColors
End Get
Set(ByVal Value As ControlColors)
prpFormColors = Value
End Set
End Property
-------------------------------------------------------------------

しかし、画面上で設定した値は保持されません。

言葉足らずかと思いますが、宜しく、お願い致します。
そういうことでしたか。。。

いやはや、独自のプロパティエディタを実装したことが無いのでお力になれませんです。(; ;

どなたかフォローお願いします。。。
#属性の勉強しよっ。

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