- - PR -
複合型プロパティの使い方を教えてください
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-12-14 11:04
Windowsアプリケーションを作成しているVB.NETビギナーです。
ビジュアルなカスタムコンポーネントを作ってそのメンバーに複合型のプロパティを 加え、フォームの設計時にプロパティを設定できるようにしようとしているのですが、 次の点でうまくいっていません。 1)同じ複合型でもSystem.DrawingのPoint型ならばプロパティウインドウに(+)記号付きで 表示され、展開してX,Yを別々に設定できるようになりますが、(+)展開表示になりません。 2)デザイナが記述するInitializeComponent()で初期値が構造体のメンバーそれぞれに 設定されたようになるのですが、このままではコンパイルエラーです。Point型の場合と 同じように次のように自動記述されるのを期待しているのですが... Me.GrpBase1.XRange = New GrpBase.TRange(0,0) そもそもカスタムの複合型をこのように記述できるのか、など調べても不明点が 多いのですが、どこが間違っているのかご指摘いただけるとうれしいです。 以下に、フォーム、コンポーネント、複合型構造体の記述の一部を示します。 VS 2003 Enterpriseを使用しています。 'カスタムコンポーネントをデザイン時にフォーム上にレイアウト Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows フォーム デザイナで生成されたコード " コンポーネントが登録され、'プロパティが記述される Friend WithEvents GrpBase1 As GraphLib.GrpBase <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() 'GrpBase1 Me.GrpBase1.Location = New System.Drawing.Point(264, 112) Me.GrpBase1.Name = "GrpBase1" Me.GrpBase1.XRange.Hi = 0 '<-- ココがうまくない! Me.GrpBase1.XRange.Lo = 0 End Sub #End Region End Class 'プロジェクトGraphLibに記述したコンポーネントクラス Public Class GrpBase Inherits System.Windows.Forms.PictureBox '複合型プロパティ Private FXRange As TRange <Category("GrpBase"), _ Description("グラフのX軸の表示レンジを指定します"), _ RefreshProperties(System.ComponentModel.RefreshProperties.All), _ Bindable(False), _ Browsable(True), _ DesignerSerializationVisibility(DesignerSerializationVisibility.Content), _ Public Property XRange() As TRange Get Return FXRange End Get Set(ByVal Value As TRange) FXRange = Value End Set End Property '描画メソッド Public Sub Draw(ByVal sender As Object, _ ByVal e As System.Windows.Forms.PaintEventArgs) End Sub End Class '複合型プロパティのための構造体TRange Public Structure TRange Private FLo As Double Private FHi As Double Public Sub New(ByVal Lo As Double, ByVal Hi As Double) FLo = Lo FHi = Hi End Sub Public Property Lo() As Double Get Return FLo End Get Set(ByVal Value As Double) FLo = Value End Set End Property Public Property Hi() As Double Get Return FHi End Get Set(ByVal Value As Double) FHi = Value End Set End Property Public Overrides Function ToString() As String Return FLo & ", " & FHi End Function End Structure 以上 |
|
投稿日時: 2004-12-14 11:43
例えば
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconimplementingtypeconverter.asp こことか、TypeConverter(型コンバータ)について調べてみてください。 |
|
投稿日時: 2004-12-14 12:04
C#で書かれていますが、考え方の参考としてこんな資料もあります。
Visual Studio .NET プロパティ ブラウザによるコンポーネントの本格的な RAD 化 の「展開可能なプロパティと文字列変換: TypeConverter とプロパティ ブラウザ」 |
|
投稿日時: 2004-12-14 12:16
yaさん、Os_さん
MSDNでAttributeやTypeConverterのあたりを調べてもぐるぐる回るだけで なかなか解決になる情報にたどり着けなかったのですが、ずばり欲しかった ところを教えていただきありがとうございます。 よく読んで勉強してみます。 |
1