Michael,
Thanks very much for digging out the code.
Regards
Simon
OK Simon,
Here we go.......
Remember: this is a very Basic example without any error-handling, etc.... You should defenitly include that, else you will receive some errors at design-time.
If I understood your issue and you know how to set the Binding to your Objects, then I beleive this will defenitly help you.
Best regards,
Michael
Imports System.ComponentModel
Imports System.ComponentModel.Design
''' -----------------------------------------------------------------------------
''' Project : ObjectBoundTextBox
''' Class : ojbTextBox
'''
''' -----------------------------------------------------------------------------
''' <summary>
''' Just a 'Basic-Demonstration'
''' </summary>
''' <remarks>
''' </remarks>
''' <history>
''' [Michael.Maes] 28/06/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Class ojbTextBox
Inherits System.Windows.Forms.TextBox
#Region " Declarations "
Dim ChangeService As IComponentChangeService
#End Region
#Region " Properties "
Dim _ObjectName As String
<EditorBrowsable(EditorBrowsableState.Always), _
Browsable(True), _
Category("Data"), _
Description("The name of an object this TextBox must bind to.")> _
Public Property ObjectName() As String
Get
Return _ObjectName
End Get
Set(ByVal Value As String)
_ObjectName = Value
End Set
End Property
Dim _PropertyName As String
<EditorBrowsable(EditorBrowsableState.Always), _
Browsable(True), _
Category("Data"), _
Description("The name of the property this TextBox must bind to.")> _
Public Property PropertyName() As String
Get
Return _PropertyName
End Get
Set(ByVal Value As String)
_PropertyName = Value
End Set
End Property
Public Overrides Property Site() As ISite
Get
Return MyBase.Site
End Get
Set(ByVal Value As ISite)
ClearChangeNotifications()
MyBase.Site = Value
ChangeService = CType(GetService(GetType(IComponentChangeService)), IComponentChangeService)
RegisterChangeNotifications()
End Set
End Property
#End Region
#Region " Event-Handlers "
Private Sub OnComponentChanged(ByVal sender As Object, ByVal ce As ComponentChangedEventArgs)
If Not (ce.Component Is Nothing) And Not (ce.Member Is Nothing) Then
Select Case ce.Member.Name
Case "ObjectName", "PropertyName"
If ce.Component.ReferenceEquals(ce.Component, Me) Then
' We have the right Instance of our ojbTextBox, so continue...
' Here you have to put your Handling code to Bind to your Object.
DirectCast(ce.Component, ojbTextBox).Text = ce.NewValue.ToString ' This is just a "Dummy Sample"
End If
End Select
End If
End Sub
Private Sub OnComponentChanging(ByVal sender As Object, ByVal ce As ComponentChangingEventArgs)
End Sub
Private Sub OnComponentAdded(ByVal sender As Object, ByVal ce As ComponentEventArgs)
End Sub
Private Sub OnComponentAdding(ByVal sender As Object, ByVal ce As ComponentEventArgs)
End Sub
Private Sub OnComponentRemoved(ByVal sender As Object, ByVal ce As ComponentEventArgs)
End Sub
Private Sub OnComponentRemoving(ByVal sender As Object, ByVal ce As ComponentEventArgs)
End Sub
Private Sub OnComponentRename(ByVal sender As Object, ByVal ce As ComponentRenameEventArgs)
End Sub
#End Region
#Region " ChangeNotifications "
Private Sub ClearChangeNotifications()
ChangeService = CType(GetService(GetType(IComponentChangeService)), IComponentChangeService)
If Not (ChangeService Is Nothing) Then
RemoveHandler ChangeService.ComponentChanged, AddressOf OnComponentChanged
RemoveHandler ChangeService.ComponentChanging, AddressOf OnComponentChanging
RemoveHandler ChangeService.ComponentAdded, AddressOf OnComponentAdded
RemoveHandler ChangeService.ComponentAdding, AddressOf OnComponentAdding
RemoveHandler ChangeService.ComponentRemoved, AddressOf OnComponentRemoved
RemoveHandler ChangeService.ComponentRemoving, AddressOf OnComponentRemoving
RemoveHandler ChangeService.ComponentRename, AddressOf OnComponentRename
End If
End Sub
Private Sub RegisterChangeNotifications()
If Not (ChangeService Is Nothing) Then
AddHandler ChangeService.ComponentChanged, AddressOf OnComponentChanged
AddHandler ChangeService.ComponentChanging, AddressOf OnComponentChanging
AddHandler ChangeService.ComponentAdded, AddressOf OnComponentAdded
AddHandler ChangeService.ComponentAdding, AddressOf OnComponentAdding
AddHandler ChangeService.ComponentRemoved, AddressOf OnComponentRemoved
AddHandler ChangeService.ComponentRemoving, AddressOf OnComponentRemoving
AddHandler ChangeService.ComponentRename, AddressOf OnComponentRename
End If
End Sub
#End Region
End Class