- yamayama
- ベテラン
- 会議室デビュー日: 2006/02/10
- 投稿数: 68
|
投稿日時: 2006-03-07 16:10
引用:
--------------------------------------------------------------------------------
じゃんぬねっとさんの書き込み (投稿日時: 2006-03-07 15:28) より:
--------------------------------------------------------------------------------
おっしゃられた通り、
色々と試してみたら何とか作成することができました。
ありがとうございました。
また、機会がありましたらよろしくお願いします。
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2006-03-07 16:36
引用: |
|
yamayamaさんの書き込み (2006-03-07 16:10) より:
おっしゃられた通り、
色々と試してみたら何とか作成することができました。
ありがとうございました。
また、機会がありましたらよろしくお願いします。
|
作成できたのであれば、ここにフィードバックをしてください。
yamayama さんのフィードバックが、同じ悩みを持つ第三者の手助けになります。
また、まずい点がないかの確認もできます。
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- yamayama
- ベテラン
- 会議室デビュー日: 2006/02/10
- 投稿数: 68
|
投稿日時: 2006-03-07 17:18
サンプルコードを乗せてみました。
実はこれでうまくいったと思ったのですが、
myMembers→格納するための変数に
値が代入されていないことが分かりました。
Public Class myControl
Private myMembers As MyMemberCollection
Public Property Members() As MyMemberCollection
Get
Return myMembers
End Get
Set(ByVal Value As MyMemberCollection)
myMembers = Value
End Set
End Property
End Class
#Region "MyMemberクラス"
Public Class MyMember
#Region "インスタンス変数"
Private myMemberName As String
Private myByteSize As Integer
Private myPenColor As Color
#End Region
#Region "プロパティ"
#Region "Public Property MemberName() As String"
Public Property MemberName() As String
Get
Return myMemberName
End Get
Set(ByVal Value As String)
myMemberName = Value
End Set
End Property
#End Region
#Region "Public Property ByteSize() As Integer"
Public Property ByteSize() As Integer
Get
Return myByteSize
End Get
Set(ByVal Value As Integer)
myByteSize = Value
End Set
End Property
#End Region
#Region "Public Property PenColor() As Color"
<Description(CATEGORY_DESCRIPTION), _
Category(CATEGORY_ITEM)> _
Public Property PenColor() As Color
Get
Return (Me.myPenColor)
End Get
Set(ByVal Value As Color)
Me.myPenColor = Value
End Set
End Property
#End Region
#End Region
End Class
#End Region
#Region "MyMemberCollectionクラス"
Public Class MyMemberCollection
Inherits System.Collections.ArrayList
Default Public Shadows Property Item(ByVal Index As Integer) As MyMember
Get
Return DirectCast(MyBase.Item(Index), MyMember)
End Get
Set(ByVal Value As MyMember)
MyBase.Item(Index) = DirectCast(Value, MyMember)
End Set
End Property
End Class
#End Region
コントロールのプロパティには
Membersプロパティが表示され、
ダイアログを表示し値を入力することまではできるのですが、
変数への値の格納ができていないようです。
理由がよくわからないのですが、何か間違いがあるのでしょうか?
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2006-03-07 17:32
引用: |
|
yamayamaさんの書き込み (2006-03-07 17:18) より:
コントロールのプロパティにはMembersプロパティが表示され、
ダイアログを表示し値を入力することまではできるのですが、
変数への値の格納ができていないようです。
理由がよくわからないのですが、何か間違いがあるのでしょうか?
|
DesignerSerializationVisibility 属性が必要です。
それと、AddRange メソッド、Or IComponent の実装。
どちらでも良かったかな...
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- うにくま
- ベテラン
- 会議室デビュー日: 2005/11/05
- 投稿数: 82
|
投稿日時: 2006-03-07 17:43
本題とは関係ありませんが、
コードの載せる場合はCODEタグを使用すると見やすくなります。([CODE][/CODE]で囲む)
こんな感じに表示されます。
コード: |
|
Public Class myControl
Private myMembers As MyMemberCollection
Public Property Members() As MyMemberCollection
Get
Return myMembers
End Get
Set(ByVal Value As MyMemberCollection)
myMembers = Value
End Set
End Property
End Class
#Region "MyMemberクラス"
Public Class MyMember
#Region "インスタンス変数"
Private myMemberName As String
Private myByteSize As Integer
Private myPenColor As Color
#End Region
#Region "プロパティ"
#Region "Public Property MemberName() As String"
Public Property MemberName() As String
Get
Return myMemberName
End Get
Set(ByVal Value As String)
myMemberName = Value
End Set
End Property
#End Region
#Region "Public Property ByteSize() As Integer"
Public Property ByteSize() As Integer
Get
Return myByteSize
End Get
Set(ByVal Value As Integer)
myByteSize = Value
End Set
End Property
#End Region
#Region "Public Property PenColor() As Color"
<Description(CATEGORY_DESCRIPTION), _
Category(CATEGORY_ITEM)> _
Public Property PenColor() As Color
Get
Return (Me.myPenColor)
End Get
Set(ByVal Value As Color)
Me.myPenColor = Value
End Set
End Property
#End Region
#End Region
End Class
#End Region
#Region "MyMemberCollectionクラス"
Public Class MyMemberCollection
Inherits System.Collections.ArrayList
Default Public Shadows Property Item(ByVal Index As Integer) As MyMember
Get
Return DirectCast(MyBase.Item(Index), MyMember)
End Get
Set(ByVal Value As MyMember)
MyBase.Item(Index) = DirectCast(Value, MyMember)
End Set
End Property
End Class
#End Region
|
|
- yamayama
- ベテラン
- 会議室デビュー日: 2006/02/10
- 投稿数: 68
|
投稿日時: 2006-03-07 20:28
引用:----------------------------------------------------------------------
うにくまさんの書き込み (投稿日時: 2006-03-07 17:43)
-------------------------------------------------------------------------
ご指摘ありがとうございました。
こういう記述方法があることをしりませんでした。_(--)_
引用:-------------------------------------------------------------------
じゃんぬねっとさんの書き込み(投稿日時: 2006-03-07 17:32)
AddRange メソッド、Or IComponent の実装
-----------------------------------------------------------------------
DesignerSerializationVisibility 属性についてはなんとなく理解できましたが
後述のAddRange メソッド、Or IComponent の実装については
色々と調べてみたのですが、
どうやっていいか分かりません。
どこか、関連サイトなどご教授願えないでしょうか?
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2006-03-08 11:19
引用: |
|
yamayamaさんの書き込み (2006-03-07 20:28) より:
引用:--------------------------------------------------------------
|
引用も [code] と同じく [quote] を使うことで可能です。
引用: |
|
DesignerSerializationVisibility 属性についてはなんとなく理解できましたが
後述のAddRange メソッド、Or IComponent の実装については色々と調べてみたのですが、
どうやっていいか分かりません。
どこか、関連サイトなどご教授願えないでしょうか?
|
あまりないものなんですね...
Collection Editor
上記を参考にする場合は、こちらの Lady.BUG さんの投稿も見た方が良いです。
(私も宇宙仮面さんと同様にハマっていましたので)
Windowsユーザーコントロールにコレクションプロパティを追加したい
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- yamayama
- ベテラン
- 会議室デビュー日: 2006/02/10
- 投稿数: 68
|
投稿日時: 2006-03-08 14:16
いろいろと親切にご教授いただきありがとうございました。
詳細な動作確認等してはいないのですが
こんな感じで、作成することができました。
コード: |
|
Public Class myControl
Inherits System.Windows.Forms.ComboBox
'この部分をつけたした場合、うまく動作する事が分かりました。●●●●●●●●
Private components As System.ComponentModel.Container = Nothing
Private Sub InitializeComponent()
components = New System.ComponentModel.Container
End Sub
#Region "コンストラクタ"
Public Sub New(ByVal container As System.ComponentModel.IContainer)
MyBase.new()
container.Add(Me)
InitializeComponent()
myMembers = New MyMemberCollection
End Sub
Public Sub New()
InitializeComponent()
myMembers = New MyMemberCollection
End Sub
#End Region
'ここまで●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
Private myMembers As MyMemberCollection
Public Property Members() As MyMemberCollection
Get
Return myMembers
End Get
Set(ByVal Value As MyMemberCollection)
myMembers = Value
End Set
End Property
End Class
#Region "MyMemberクラス"
Public Class MyMember
#Region "インスタンス変数"
Private myMemberName As String
Private myByteSize As Integer
Private myPenColor As Color
#End Region
#Region "プロパティ"
#Region "Public Property MemberName() As String"
Public Property MemberName() As String
Get
Return myMemberName
End Get
Set(ByVal Value As String)
myMemberName = Value
End Set
End Property
#End Region
#Region "Public Property ByteSize() As Integer"
Public Property ByteSize() As Integer
Get
Return myByteSize
End Get
Set(ByVal Value As Integer)
myByteSize = Value
End Set
End Property
#End Region
#Region "Public Property PenColor() As Color"
Public Property PenColor() As Color
Get
Return (Me.myPenColor)
End Get
Set(ByVal Value As Color)
Me.myPenColor = Value
End Set
End Property
#End Region
#End Region
End Class
#End Region
#Region "MyMemberCollectionクラス"
Public Class MyMemberCollection
Inherits System.Collections.ArrayList
Default Public Shadows Property Item(ByVal Index As Integer) As MyMember
Get
Return DirectCast(MyBase.Item(Index), MyMember)
End Get
Set(ByVal Value As MyMember)
MyBase.Item(Index) = DirectCast(Value, MyMember)
End Set
End Property
End Class
#End Region
|
何かおかしな点などございましたら
ご指摘のほどよろしくお願いします。
|