コレクションエディタ登録時に値のチェック
- 題名: コレクションエディタ登録時に値のチェック
- 著者: かもめ
- 日時: 2005/10/18 21:56:25
- ID: 13323
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: コレクションエディタ登録時に値のチェック
- 著者: まどか
- 日時: 2005/10/19 14:08:42
- ID: 13330
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: コレクションエディタ登録時に値のチェック
- 著者: かもめ
- 日時: 2005/10/20 22:42:31
- ID: 13374
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
こんばんは。
以前、「INT配列のコレクションエディタについて」
質問したものです。
じゃんぬさんに言われたとおり
CollectionBaseを継承して、コレクションエディタでINT配列を
作成、編集、削除できるようになりました。
ここでまた2つほど質問なのですが、
1.値の初期値を最初は0で次からは前回+1にしたい。
2.値をエディタで入力したとき、すでに登録してある値であればメッセージ表示でエラーを促す。
ということをしたいのですが、どうすればいいのか分かりません。
CollectionEditor・UITypeEditorなどがひっかかってはいるのですが、
何か具体的な事例みたいなものが載っているHPなどがあればご紹介ください。
ちなみに長いのですが、現状のソースを載せておきます。
Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Drawing
Imports System.Windows.Forms
'アイテム
<ToolboxItem(False), DesignTimeVisible(False)> _
Public Class _Data
Inherits Component
Private mInt As Int16
Public Property INT() As Int16
Get
Return mInt
End Get
Set(ByVal Value As Int16)
mInt = Value
End Set
End Property
End Class
'アイテムを保持するコレクション
Public Class _Collection
Inherits CollectionBase
Private UCtl As _UserControl
Public Sub New(ByVal value As _UserControl)
UCtl = value
End Sub
Default Public ReadOnly Property Item(ByVal index As Int32) As _Data
Get
Return CType(List(index), _Data)
End Get
End Property
Public Function Add(ByVal value As _Data) As _Data
List.Add(value)
Return value
End Function
End Class
'コレクションを保持するコントロール
Public Class _UserControl
Inherits System.Windows.Forms.Control
Private myint16 As _Collection
#Region " Windows フォーム デザイナで生成されたコード "
Public Sub New()
MyBase.New()
' この呼び出しは Windows フォーム デザイナで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後に初期化を追加します。
myint16 = New _Collection(Me)
End Sub
' UserControl1 は、コンポーネント一覧に後処理を実行するために dispose をオーバーライドします。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
' Windows フォーム デザイナで必要です。
Private components As System.ComponentModel.IContainer
' メモ : 以下のプロシージャは、Windows フォーム デザイナで必要です。
'Windows フォーム デザイナを使って変更してください。
' コード エディタを使って変更しないでください。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
components = New System.ComponentModel.Container
End Sub
#End Region
Public Property Items() As _Collection
Get
Return myint16
End Get
Set(ByVal Value As _Collection)
myint16 = Value
End Set
End Property
End Class