- PR -

自作DATAGRIDのコレクションプロパティ

1
投稿者投稿内容
adtk
ベテラン
会議室デビュー日: 2004/02/06
投稿数: 75
投稿日時: 2004-05-18 15:29
VB.NET-DATAGRIDから派生して自作のコントロールを作成しました。
もう一歩、使い勝手を良くしようと思い、各種設定をプロパティウィンドウからできるように作りこんでいます。

が、列をデータグリッドのコレクションとして設定するために
1.列クラスを作成
2.列コレクションクラスを作成
3.データグリッドクラスでプロパティとして列コレクションクラスを公開
の手順でやってみましたが、どうもうまくいきません。

現象として、プロパティウィンドウにコレクションのプロパティは表示されるのですが、コレクションの要素を追加しようと「追加」ボタンを押すと、列クラスが追加されるはずが、OBJECTクラスがついかされてしまいます。


以下、各クラスのソースとその実装部分です。 ※列クラスのプロパティ数は減らしてあります。
列コレクションクラスのAddRange辺りが怪しい??


'**************************************************************************
'class
'名称 : columnInfo
'機能 : 列クラス
' :
'**************************************************************************
<System.ComponentModel.DesignTimeVisible(False)> Public Class columnInfo
Inherits System.ComponentModel.Component

Sub New()
End Sub
Sub New(ByVal value As columnInfo)
Me.ColumnType = value.ColumnType
End Sub

Public Enum colType
Normal = 0
Fixed = 1
Graph = 2
End Enum
Private _ColumnType As colType

<System.ComponentModel.BrowsableAttribute(True) _
, System.ComponentModel.DescriptionAttribute("列タイプ")> _
Public Property ColumnType() As colType
Get
Return _ColumnType
End Get
Set(ByVal Value As colType)
_ColumnType = Value
End Set
End Property
End Class


'**************************************************************************
'class
'名称 : columnInfoCollection
'機能 : 列コレクションクラス
' :
'**************************************************************************
Public Class columnInfoCollection
Inherits System.Collections.ArrayList
Sub New()
End Sub

<System.ComponentModel.BrowsableAttribute(True) _
, System.ComponentModel.DescriptionAttribute("列情報")> _
Default Public Shadows Property col(ByVal ind As Integer) As columnInfo
Get
Return Me(ind)
End Get
Set(ByVal Value As columnInfo)
Me(ind) = Value
End Set
End Property

Public Overloads Sub AddRange(ByVal obj As columnInfo())
MyBase.AddRange(obj)
End Sub
End Class


↓↓↓↓↓ 以下データグリッドクラスへの実装 ↓↓↓↓↓ 

'**************************************************************************
'Property
'名称 : Column
'機能 : 列情報プロパティ
'**************************************************************************
Private oColInfo As columnInfoCollection
<System.ComponentModel.BrowsableAttribute(True) _
, System.ComponentModel.CategoryAttribute("MyProperty") _
, System.ComponentModel.DescriptionAttribute("列情報を設定します") _
, DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
Public Property Column() As columnInfoCollection
Get
Return oColInfo
End Get
Set(ByVal value As columnInfoCollection)
oColInfo = value
End Set
End Property
1

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