Hope somebody can help!
I want to automatically be able to add code to the initialize routine on a Windows form when I add a custom control that I've written to a form.
Specifically, I'm trying to data bind to a normal class. So I've extended the standard text box to include a field for object name and property name. I want to be able to add a line such as :
controlname.Dat aBindings.Add(" Text", objectName, "myPropertyName ")
I've tried using google and looking at the documentation but can't seem to find this... I don't know if there is an alternative way of doing it in the startup code of the form (I seem to have a thought that reflection could be used to get the instance of the object for the data binding code above but I can't work out how!!).
I would be grateful for any pointers.
Many thanks in advance
Simon
Nov 20 '05
21 1905
OK Simon, heres one way to do it. ( in my case the bindings were to a checked property on the class and a checkbox on the usercontrol
Dim f As Form1 = Me.ParentForm
Me.CheckBox1.Da taBindings.Add( "Checked", f.aPerson, "Checked")
--
OHM ( Terry Burns )
. . . One-Handed-Man . . .
Time flies when you don't know what you're doing
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:eh******** *****@tk2msftng p13.phx.gbl...
Michael,
If you have a code sample that you could post, I'd be eternally grateful ...
Regards
Simon
"Michael Maes" <mi*****@merlot .com> wrote in message news:eI******** ******@tk2msftn gp13.phx.gbl...
Hi Simon.
Just a "wild guess":
If your Object is on the Form or in the ComponentsTray, then you can iterate through that collection until you've found your Object during Design-Time. This can be done by capturing the OnComponentAdde d-Event of the IComponentChang eService (This service would be implemented in your custom control). You could also set a trigger in the OnComponentChan ged-Event when the Property of "PropertyNa me" has changed.
This all of course can only work if your Object to which you want to bind is on the Form or ComponentTray (during design-time).
If this approach could help you, I would be glad to "get you on the road" with the 'IComponentChan geService' .
Regards,
Michael
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:uC******** ******@TK2MSFTN GP09.phx.gbl...
Michael,
Thanks for the reply... I'm not 100% sure I'm following how I would use your advice!
I've done some more work on the subject, and ideally it looks like I need some way of dynamically "getting" the object that I want to bind to from within my control.
eg something like...
ObjectName="nam e_of_object_on_ form"
PropertyName="n ame_of_property _to bind_to"
dim obj as object
obj=XXXXXX(obje ctname) <---- this is the line I need which retrieves the object from the parent form.
me.databinding. add("text",obj, PropertyName)
I think if I could work this out then I would solve the problem?
Regards
Simon
"Michael Maes" <mi*****@merlot .com> wrote in message news:%2******** ********@tk2msf tngp13.phx.gbl. ..
Hi Simon,
I might be entirely "off track" but if I understand your issue well, you could use a "IComponentChan geService".
I have created a Component which "Watches" all Components/Controls Added, Removed, Property Edited, ... on a Windows Form.
You could also use a "IComponentChan geService" directly in your Custom Control.
Having this done you could catch the "OnComponentAdd ed"-Event and put some code in it to set your bindings.
As I said: I'm not sure if I fully understood your problem, but if I did I think this might be a solution.
Regards,
Michael
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
Terry,
No it's a Windows Form..
It refers to my question last week about data binding to a simple object. Which works fine... except that you need to manually add some code to databind the text boxes to the object in your main form...
I'm trying to get is so that somehow this step is automated.
I've created an inherited text box that allows me to enter the name of the object and the property to bind to. This is the easy bit.. I'm still working on some way of getting the actual binding to be "automatic" ie not require the binding code to be added manually. I'd therefore like the binding code to be added automatically in the control intialization code where it sets all the control properties.. or alternatively, find some way of doing the binding from the control itself, once the object and property names are set...
Does this make sense?
Regards
Simon
"One Handed Man ( OHM - Terry Burns )" <news.microsoft .com> wrote in message news:eF******** ******@TK2MSFTN GP11.phx.gbl...
I assume this is a webform you are talking about. If so, each userconrol has its owen Page_load event. In this you should be able to bind and object in the parent container, dont have time to look up the properties now but in psuedo I imagine if would be something like.
Me.Parent.Contr ol.DataBindings .Add( Text, me, Property)
--
OHM ( Terry Burns )
. . . One-Handed-Man . . .
Time flies when you don't know what you're doing
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:OA******** ******@TK2MSFTN GP09.phx.gbl...
Hope somebody can help!
I want to automatically be able to add code to the initialize routine on a Windows form when I add a custom control that I've written to a form.
Specifically, I'm trying to data bind to a normal class. So I've extended the standard text box to include a field for object name and property name. I want to be able to add a line such as :
controlname.Dat aBindings.Add(" Text", objectName, "myPropertyName ")
I've tried using google and looking at the documentation but can't seem to find this... I don't know if there is an alternative way of doing it in the startup code of the form (I seem to have a thought that reflection could be used to get the instance of the object for the data binding code above but I can't work out how!!).
I would be grateful for any pointers.
Many thanks in advance
Simon
Hi Simon,
I will look into it tonight or tomorrow.
Until then!
J
Michael
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:eh******** *****@tk2msftng p13.phx.gbl...
Michael,
If you have a code sample that you could post, I'd be eternally grateful ...
Regards
Simon
"Michael Maes" <mi*****@merlot .com> wrote in message news:eI******** ******@tk2msftn gp13.phx.gbl...
Hi Simon.
Just a "wild guess":
If your Object is on the Form or in the ComponentsTray, then you can iterate through that collection until you've found your Object during Design-Time. This can be done by capturing the OnComponentAdde d-Event of the IComponentChang eService (This service would be implemented in your custom control). You could also set a trigger in the OnComponentChan ged-Event when the Property of "PropertyNa me" has changed.
This all of course can only work if your Object to which you want to bind is on the Form or ComponentTray (during design-time).
If this approach could help you, I would be glad to "get you on the road" with the 'IComponentChan geService' .
Regards,
Michael
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:uC******** ******@TK2MSFTN GP09.phx.gbl...
Michael,
Thanks for the reply... I'm not 100% sure I'm following how I would use your advice!
I've done some more work on the subject, and ideally it looks like I need some way of dynamically "getting" the object that I want to bind to from within my control.
eg something like...
ObjectName="nam e_of_object_on_ form"
PropertyName="n ame_of_property _to bind_to"
dim obj as object
obj=XXXXXX(obje ctname) <---- this is the line I need which retrieves the object from the parent form.
me.databinding. add("text",obj, PropertyName)
I think if I could work this out then I would solve the problem?
Regards
Simon
"Michael Maes" <mi*****@merlot .com> wrote in message news:%2******** ********@tk2msf tngp13.phx.gbl. ..
Hi Simon,
I might be entirely "off track" but if I understand your issue well, you could use a "IComponentChan geService".
I have created a Component which "Watches" all Components/Controls Added, Removed, Property Edited, ... on a Windows Form.
You could also use a "IComponentChan geService" directly in your Custom Control.
Having this done you could catch the "OnComponentAdd ed"-Event and put some code in it to set your bindings.
As I said: I'm not sure if I fully understood your problem, but if I did I think this might be a solution.
Regards,
Michael
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
Terry,
No it's a Windows Form..
It refers to my question last week about data binding to a simple object. Which works fine... except that you need to manually add some code to databind the text boxes to the object in your main form...
I'm trying to get is so that somehow this step is automated.
I've created an inherited text box that allows me to enter the name of the object and the property to bind to. This is the easy bit.. I'm still working on some way of getting the actual binding to be "automatic" ie not require the binding code to be added manually. I'd therefore like the binding code to be added automatically in the control intialization code where it sets all the control properties.. or alternatively, find some way of doing the binding from the control itself, once the object and property names are set...
Does this make sense?
Regards
Simon
"One Handed Man ( OHM - Terry Burns )" <news.microsoft .com> wrote in message news:eF******** ******@TK2MSFTN GP11.phx.gbl...
I assume this is a webform you are talking about. If so, each userconrol has its owen Page_load event. In this you should be able to bind and object in the parent container, dont have time to look up the properties now but in psuedo I imagine if would be something like.
Me.Parent.Contr ol.DataBindings .Add( Text, me, Property)
--
OHM ( Terry Burns )
. . . One-Handed-Man . . .
Time flies when you don't know what you're doing
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:OA******** ******@TK2MSFTN GP09.phx.gbl...
Hope somebody can help!
I want to automatically be able to add code to the initialize routine on a Windows form when I add a custom control that I've written to a form.
Specifically, I'm trying to data bind to a normal class. So I've extended the standard text box to include a field for object name and property name. I want to be able to add a line such as :
controlname.Dat aBindings.Add(" Text", objectName, "myPropertyName ")
I've tried using google and looking at the documentation but can't seem to find this... I don't know if there is an alternative way of doing it in the startup code of the form (I seem to have a thought that reflection could be used to get the instance of the object for the data binding code above but I can't work out how!!).
I would be grateful for any pointers.
Many thanks in advance
Simon
Terry,
Thanks for that.
I presume that in your example, "aperson" is an object created within the form. My scenario is identical EXCEPT that I don't know at coding time the name of the object - it will be dynamically assigned at design time...
Regards
Simon
"One Handed Man ( OHM - Terry Burns )" <news.microsoft .com> wrote in message news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
OK Simon, heres one way to do it. ( in my case the bindings were to a checked property on the class and a checkbox on the usercontrol
Dim f As Form1 = Me.ParentForm
Me.CheckBox1.Da taBindings.Add( "Checked", f.aPerson, "Checked")
--
OHM ( Terry Burns )
. . . One-Handed-Man . . .
Time flies when you don't know what you're doing
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:eh******** *****@tk2msftng p13.phx.gbl...
Michael,
If you have a code sample that you could post, I'd be eternally grateful ...
Regards
Simon
"Michael Maes" <mi*****@merlot .com> wrote in message news:eI******** ******@tk2msftn gp13.phx.gbl...
Hi Simon.
Just a "wild guess":
If your Object is on the Form or in the ComponentsTray, then you can iterate through that collection until you've found your Object during Design-Time. This can be done by capturing the OnComponentAdde d-Event of the IComponentChang eService (This service would be implemented in your custom control). You could also set a trigger in the OnComponentChan ged-Event when the Property of "PropertyNa me" has changed.
This all of course can only work if your Object to which you want to bind is on the Form or ComponentTray (during design-time).
If this approach could help you, I would be glad to "get you on the road" with the 'IComponentChan geService' .
Regards,
Michael
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:uC******** ******@TK2MSFTN GP09.phx.gbl...
Michael,
Thanks for the reply... I'm not 100% sure I'm following how I would use your advice!
I've done some more work on the subject, and ideally it looks like I need some way of dynamically "getting" the object that I want to bind to from within my control.
eg something like...
ObjectName="nam e_of_object_on_ form"
PropertyName="n ame_of_property _to bind_to"
dim obj as object
obj=XXXXXX(obje ctname) <---- this is the line I need which retrieves the object from the parent form.
me.databinding. add("text",obj, PropertyName)
I think if I could work this out then I would solve the problem?
Regards
Simon
"Michael Maes" <mi*****@merlot .com> wrote in message news:%2******** ********@tk2msf tngp13.phx.gbl. ..
Hi Simon,
I might be entirely "off track" but if I understand your issue well, you could use a "IComponentChan geService".
I have created a Component which "Watches" all Components/Controls Added, Removed, Property Edited, ... on a Windows Form.
You could also use a "IComponentChan geService" directly in your Custom Control.
Having this done you could catch the "OnComponentAdd ed"-Event and put some code in it to set your bindings.
As I said: I'm not sure if I fully understood your problem, but if I did I think this might be a solution.
Regards,
Michael
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
Terry,
No it's a Windows Form..
It refers to my question last week about data binding to a simple object. Which works fine... except that you need to manually add some code to databind the text boxes to the object in your main form...
I'm trying to get is so that somehow this step is automated.
I've created an inherited text box that allows me to enter the name of the object and the property to bind to. This is the easy bit.. I'm still working on some way of getting the actual binding to be "automatic" ie not require the binding code to be added manually. I'd therefore like the binding code to be added automatically in the control intialization code where it sets all the control properties.. or alternatively, find some way of doing the binding from the control itself, once the object and property names are set...
Does this make sense?
Regards
Simon
"One Handed Man ( OHM - Terry Burns )" <news.microsoft .com> wrote in message news:eF******** ******@TK2MSFTN GP11.phx.gbl...
I assume this is a webform you are talking about. If so, each userconrol has its owen Page_load event. In this you should be able to bind and object in the parent container, dont have time to look up the properties now but in psuedo I imagine if would be something like.
Me.Parent.Contr ol.DataBindings .Add( Text, me, Property)
--
OHM ( Terry Burns )
. . . One-Handed-Man . . .
Time flies when you don't know what you're doing
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:OA******** ******@TK2MSFTN GP09.phx.gbl...
Hope somebody can help!
I want to automatically be able to add code to the initialize routine on a Windows form when I add a custom control that I've written to a form.
Specifically, I'm trying to data bind to a normal class. So I've extended the standard text box to include a field for object name and property name. I want to be able to add a line such as :
controlname.Dat aBindings.Add(" Text", objectName, "myPropertyName ")
I've tried using google and looking at the documentation but can't seem to find this... I don't know if there is an alternative way of doing it in the startup code of the form (I seem to have a thought that reflection could be used to get the instance of the object for the data binding code above but I can't work out how!!).
I would be grateful for any pointers.
Many thanks in advance
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.Componen tModel
Imports System.Componen tModel.Design
''' -----------------------------------------------------------------------------
''' Project : ObjectBoundText Box
''' 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 IComponentChang eService
#End Region
#Region " Properties "
Dim _ObjectName As String
<EditorBrowsabl e(EditorBrowsab leState.Always) , _
Browsable(True) , _
Category("Data" ), _
Description("Th e 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
<EditorBrowsabl e(EditorBrowsab leState.Always) , _
Browsable(True) , _
Category("Data" ), _
Description("Th e 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)
ClearChangeNoti fications()
MyBase.Site = Value
ChangeService = CType(GetServic e(GetType(IComp onentChangeServ ice)), IComponentChang eService)
RegisterChangeN otifications()
End Set
End Property
#End Region
#Region " Event-Handlers "
Private Sub OnComponentChan ged(ByVal sender As Object, ByVal ce As ComponentChange dEventArgs)
If Not (ce.Component Is Nothing) And Not (ce.Member Is Nothing) Then
Select Case ce.Member.Name
Case "ObjectName ", "PropertyNa me"
If ce.Component.Re ferenceEquals(c e.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.C omponent, ojbTextBox).Tex t = ce.NewValue.ToS tring ' This is just a "Dummy Sample"
End If
End Select
End If
End Sub
Private Sub OnComponentChan ging(ByVal sender As Object, ByVal ce As ComponentChangi ngEventArgs)
End Sub
Private Sub OnComponentAdde d(ByVal sender As Object, ByVal ce As ComponentEventA rgs)
End Sub
Private Sub OnComponentAddi ng(ByVal sender As Object, ByVal ce As ComponentEventA rgs)
End Sub
Private Sub OnComponentRemo ved(ByVal sender As Object, ByVal ce As ComponentEventA rgs)
End Sub
Private Sub OnComponentRemo ving(ByVal sender As Object, ByVal ce As ComponentEventA rgs)
End Sub
Private Sub OnComponentRena me(ByVal sender As Object, ByVal ce As ComponentRename EventArgs)
End Sub
#End Region
#Region " ChangeNotificat ions "
Private Sub ClearChangeNoti fications()
ChangeService = CType(GetServic e(GetType(IComp onentChangeServ ice)), IComponentChang eService)
If Not (ChangeService Is Nothing) Then
RemoveHandler ChangeService.C omponentChanged , AddressOf OnComponentChan ged
RemoveHandler ChangeService.C omponentChangin g, AddressOf OnComponentChan ging
RemoveHandler ChangeService.C omponentAdded, AddressOf OnComponentAdde d
RemoveHandler ChangeService.C omponentAdding, AddressOf OnComponentAddi ng
RemoveHandler ChangeService.C omponentRemoved , AddressOf OnComponentRemo ved
RemoveHandler ChangeService.C omponentRemovin g, AddressOf OnComponentRemo ving
RemoveHandler ChangeService.C omponentRename, AddressOf OnComponentRena me
End If
End Sub
Private Sub RegisterChangeN otifications()
If Not (ChangeService Is Nothing) Then
AddHandler ChangeService.C omponentChanged , AddressOf OnComponentChan ged
AddHandler ChangeService.C omponentChangin g, AddressOf OnComponentChan ging
AddHandler ChangeService.C omponentAdded, AddressOf OnComponentAdde d
AddHandler ChangeService.C omponentAdding, AddressOf OnComponentAddi ng
AddHandler ChangeService.C omponentRemoved , AddressOf OnComponentRemo ved
AddHandler ChangeService.C omponentRemovin g, AddressOf OnComponentRemo ving
AddHandler ChangeService.C omponentRename, AddressOf OnComponentRena me
End If
End Sub
#End Region
End Class
Michael,
Thanks very much for digging out the code.
Regards
Simon
"Michael Maes" <mi*****@merlot .com> wrote in message news:u$******** ******@TK2MSFTN GP11.phx.gbl...
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.Componen tModel
Imports System.Componen tModel.Design
''' -----------------------------------------------------------------------------
''' Project : ObjectBoundText Box
''' 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 IComponentChang eService
#End Region
#Region " Properties "
Dim _ObjectName As String
<EditorBrowsabl e(EditorBrowsab leState.Always) , _
Browsable(True) , _
Category("Data" ), _
Description("Th e 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
<EditorBrowsabl e(EditorBrowsab leState.Always) , _
Browsable(True) , _
Category("Data" ), _
Description("Th e 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)
ClearChangeNoti fications()
MyBase.Site = Value
ChangeService = CType(GetServic e(GetType(IComp onentChangeServ ice)), IComponentChang eService)
RegisterChangeN otifications()
End Set
End Property
#End Region
#Region " Event-Handlers "
Private Sub OnComponentChan ged(ByVal sender As Object, ByVal ce As ComponentChange dEventArgs)
If Not (ce.Component Is Nothing) And Not (ce.Member Is Nothing) Then
Select Case ce.Member.Name
Case "ObjectName ", "PropertyNa me"
If ce.Component.Re ferenceEquals(c e.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.C omponent, ojbTextBox).Tex t = ce.NewValue.ToS tring ' This is just a "Dummy Sample"
End If
End Select
End If
End Sub
Private Sub OnComponentChan ging(ByVal sender As Object, ByVal ce As ComponentChangi ngEventArgs)
End Sub
Private Sub OnComponentAdde d(ByVal sender As Object, ByVal ce As ComponentEventA rgs)
End Sub
Private Sub OnComponentAddi ng(ByVal sender As Object, ByVal ce As ComponentEventA rgs)
End Sub
Private Sub OnComponentRemo ved(ByVal sender As Object, ByVal ce As ComponentEventA rgs)
End Sub
Private Sub OnComponentRemo ving(ByVal sender As Object, ByVal ce As ComponentEventA rgs)
End Sub
Private Sub OnComponentRena me(ByVal sender As Object, ByVal ce As ComponentRename EventArgs)
End Sub
#End Region
#Region " ChangeNotificat ions "
Private Sub ClearChangeNoti fications()
ChangeService = CType(GetServic e(GetType(IComp onentChangeServ ice)), IComponentChang eService)
If Not (ChangeService Is Nothing) Then
RemoveHandler ChangeService.C omponentChanged , AddressOf OnComponentChan ged
RemoveHandler ChangeService.C omponentChangin g, AddressOf OnComponentChan ging
RemoveHandler ChangeService.C omponentAdded, AddressOf OnComponentAdde d
RemoveHandler ChangeService.C omponentAdding, AddressOf OnComponentAddi ng
RemoveHandler ChangeService.C omponentRemoved , AddressOf OnComponentRemo ved
RemoveHandler ChangeService.C omponentRemovin g, AddressOf OnComponentRemo ving
RemoveHandler ChangeService.C omponentRename, AddressOf OnComponentRena me
End If
End Sub
Private Sub RegisterChangeN otifications()
If Not (ChangeService Is Nothing) Then
AddHandler ChangeService.C omponentChanged , AddressOf OnComponentChan ged
AddHandler ChangeService.C omponentChangin g, AddressOf OnComponentChan ging
AddHandler ChangeService.C omponentAdded, AddressOf OnComponentAdde d
AddHandler ChangeService.C omponentAdding, AddressOf OnComponentAddi ng
AddHandler ChangeService.C omponentRemoved , AddressOf OnComponentRemo ved
AddHandler ChangeService.C omponentRemovin g, AddressOf OnComponentRemo ving
AddHandler ChangeService.C omponentRename, AddressOf OnComponentRena me
End If
End Sub
#End Region
End Class
Hey Simon,
Does this fully answer your questions, because I came to the conclusion I didn't point out how to actually set your binding.
On the other hand, I was thinking if your DataObjects are on the Form or ComponentTray, you could set the Binding in Design-time through the Property-Window. Sure your DataObjects must all inherit from the same BaseClass, so you could do something like:
Dim _DataSource As YourBaseClass
<EditorBrowsabl e(EditorBrowsab leState.Always) , _
Category("Data" ), _
Browsable(True) , _
Bindable(True), _
Description("Th e DataObject to bind the TextBox to."), _
TypeConverter(" System.Windows. Forms.Design.Da taSourceConvert er, System.Design") , _
RefreshProperti es(RefreshPrope rties.All)> _
Public Overloads Property DataSource() As Object
Get
Return _DataSource
End Get
Set(ByVal Value As Object)
_DataSource = Value
End Set
End Property
Should you use this approach, then you have to fine-tune this property, because it's for Complex-DataBinding and as you know, the TextBox-Class has Simple DataBinding. Doing this you would get a dropdown-list with all possible DataObjects your TextBox can bind to.
Anyway: should you furthermore want to make use of the 'IComponentChan geService' then you would defently need Reflection to Get/Set some values of Components/Controls which you don't know of in Design-Time. Something like:
Private Sub OnComponentRena me(ByVal sender As Object, ByVal ce As ComponentRename EventArgs)
If IsNothing(ce) Or IsNothing(ce.Co mponent) Then Exit Sub
Dim ot As Object = ce.Component
Dim s As String = ot.GetType.ToSt ring
Dim p As PropertyInfo
' Set a Boolean-Property
p = ot.GetType.GetP roperty("MyDesi redPropertyName ")
p.SetValue(ot, False, Nothing)
' Set a String-Property
p = ot.GetType.GetP roperty("MyOthe rDesiredPropert yName")
p.SetValue(ot, ce.NewName, Nothing)
' Continue other logic
............... ............... ............... .............
............... ............... ............... .............
End Sub
Also keep in mind with the 'IComponentChan geService' that you address the right INSTANCE, because if you have two or more controls of the same type on a form, then it will loop through all those controls (even if this service is called from within a single control)!!
I wish you the best, and let me know if you could manage your goal.
Kind regards,
Michael
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:uA******** ******@tk2msftn gp13.phx.gbl...
Michael,
Thanks very much for digging out the code.
Regards
Simon
Yes aPerson is an object created ( like in the previous example from Jay ) in the main form. If you dont know the name of this object, then use reflection to establish this.
--
OHM ( Terry Burns )
. . . One-Handed-Man . . .
Time flies when you don't know what you're doing
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:%2******** ********@TK2MSF TNGP12.phx.gbl. ..
Terry,
Thanks for that.
I presume that in your example, "aperson" is an object created within the form. My scenario is identical EXCEPT that I don't know at coding time the name of the object - it will be dynamically assigned at design time...
Regards
Simon
"One Handed Man ( OHM - Terry Burns )" <news.microsoft .com> wrote in message news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
OK Simon, heres one way to do it. ( in my case the bindings were to a checked property on the class and a checkbox on the usercontrol
Dim f As Form1 = Me.ParentForm
Me.CheckBox1.Da taBindings.Add( "Checked", f.aPerson, "Checked")
--
OHM ( Terry Burns )
. . . One-Handed-Man . . .
Time flies when you don't know what you're doing
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:eh******** *****@tk2msftng p13.phx.gbl...
Michael,
If you have a code sample that you could post, I'd be eternally grateful ...
Regards
Simon
"Michael Maes" <mi*****@merlot .com> wrote in message news:eI******** ******@tk2msftn gp13.phx.gbl...
Hi Simon.
Just a "wild guess":
If your Object is on the Form or in the ComponentsTray, then you can iterate through that collection until you've found your Object during Design-Time. This can be done by capturing the OnComponentAdde d-Event of the IComponentChang eService (This service would be implemented in your custom control). You could also set a trigger in the OnComponentChan ged-Event when the Property of "PropertyNa me" has changed.
This all of course can only work if your Object to which you want to bind is on the Form or ComponentTray (during design-time).
If this approach could help you, I would be glad to "get you on the road" with the 'IComponentChan geService' .
Regards,
Michael
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:uC******** ******@TK2MSFTN GP09.phx.gbl...
Michael,
Thanks for the reply... I'm not 100% sure I'm following how I would use your advice!
I've done some more work on the subject, and ideally it looks like I need some way of dynamically "getting" the object that I want to bind to from within my control.
eg something like...
ObjectName="nam e_of_object_on_ form"
PropertyName="n ame_of_property _to bind_to"
dim obj as object
obj=XXXXXX(obje ctname) <---- this is the line I need which retrieves the object from the parent form.
me.databinding. add("text",obj, PropertyName)
I think if I could work this out then I would solve the problem?
Regards
Simon
"Michael Maes" <mi*****@merlot .com> wrote in message news:%2******** ********@tk2msf tngp13.phx.gbl. ..
Hi Simon,
I might be entirely "off track" but if I understand your issue well, you could use a "IComponentChan geService".
I have created a Component which "Watches" all Components/Controls Added, Removed, Property Edited, ... on a Windows Form.
You could also use a "IComponentChan geService" directly in your Custom Control.
Having this done you could catch the "OnComponentAdd ed"-Event and put some code in it to set your bindings.
As I said: I'm not sure if I fully understood your problem, but if I did I think this might be a solution.
Regards,
Michael
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
Terry,
No it's a Windows Form..
It refers to my question last week about data binding to a simple object. Which works fine... except that you need to manually add some code to databind the text boxes to the object in your main form...
I'm trying to get is so that somehow this step is automated.
I've created an inherited text box that allows me to enter the name of the object and the property to bind to. This is the easy bit.. I'm still working on some way of getting the actual binding to be "automatic" ie not require the binding code to be added manually. I'd therefore like the binding code to be added automatically in the control intialization code where it sets all the control properties.. or alternatively, find some way of doing the binding from the control itself, once the object and property names are set...
Does this make sense?
Regards
Simon
"One Handed Man ( OHM - Terry Burns )" <news.microsoft .com> wrote in message news:eF******** ******@TK2MSFTN GP11.phx.gbl...
I assume this is a webform you are talking about. If so, each userconrol has its owen Page_load event. In this you should be able to bind and object in the parent container, dont have time to look up the properties now but in psuedo I imagine if would be something like.
Me.Parent.Contr ol.DataBindings .Add( Text, me, Property)
--
OHM ( Terry Burns )
. . . One-Handed-Man . . .
Time flies when you don't know what you're doing
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:OA******** ******@TK2MSFTN GP09.phx.gbl...
Hope somebody can help!
I want to automatically be able to add code to the initialize routine on a Windows form when I add a custom control that I've written to a form.
Specifically, I'm trying to data bind to a normal class. So I've extended the standard text box to include a field for object name and property name. I want to be able to add a line such as :
controlname.Dat aBindings.Add(" Text", objectName, "myPropertyName ")
I've tried using google and looking at the documentation but can't seem to find this... I don't know if there is an alternative way of doing it in the startup code of the form (I seem to have a thought that reflection could be used to get the instance of the object for the data binding code above but I can't work out how!!).
I would be grateful for any pointers.
Many thanks in advance
Simon
that was my problem I think!! I'm not sure how to code using reflection to get this!! <G>
regards
Simon
"One Handed Man ( OHM - Terry Burns )" <news.microsoft .com> wrote in message news:OX******** ******@TK2MSFTN GP11.phx.gbl...
Yes aPerson is an object created ( like in the previous example from Jay ) in the main form. If you dont know the name of this object, then use reflection to establish this.
--
OHM ( Terry Burns )
. . . One-Handed-Man . . .
Time flies when you don't know what you're doing
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:%2******** ********@TK2MSF TNGP12.phx.gbl. ..
Terry,
Thanks for that.
I presume that in your example, "aperson" is an object created within the form. My scenario is identical EXCEPT that I don't know at coding time the name of the object - it will be dynamically assigned at design time...
Regards
Simon
"One Handed Man ( OHM - Terry Burns )" <news.microsoft .com> wrote in message news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
OK Simon, heres one way to do it. ( in my case the bindings were to a checked property on the class and a checkbox on the usercontrol
Dim f As Form1 = Me.ParentForm
Me.CheckBox1.Da taBindings.Add( "Checked", f.aPerson, "Checked")
--
OHM ( Terry Burns )
. . . One-Handed-Man . . .
Time flies when you don't know what you're doing
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:eh******** *****@tk2msftng p13.phx.gbl...
Michael,
If you have a code sample that you could post, I'd be eternally grateful ...
Regards
Simon
"Michael Maes" <mi*****@merlot .com> wrote in message news:eI******** ******@tk2msftn gp13.phx.gbl...
Hi Simon.
Just a "wild guess":
If your Object is on the Form or in the ComponentsTray, then you can iterate through that collection until you've found your Object during Design-Time. This can be done by capturing the OnComponentAdde d-Event of the IComponentChang eService (This service would be implemented in your custom control). You could also set a trigger in the OnComponentChan ged-Event when the Property of "PropertyNa me" has changed.
This all of course can only work if your Object to which you want to bind is on the Form or ComponentTray (during design-time).
If this approach could help you, I would be glad to "get you on the road" with the 'IComponentChan geService' .
Regards,
Michael
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:uC******** ******@TK2MSFTN GP09.phx.gbl...
Michael,
Thanks for the reply... I'm not 100% sure I'm following how I would use your advice!
I've done some more work on the subject, and ideally it looks like I need some way of dynamically "getting" the object that I want to bind to from within my control.
eg something like...
ObjectName="nam e_of_object_on_ form"
PropertyName="n ame_of_property _to bind_to"
dim obj as object
obj=XXXXXX(obje ctname) <---- this is the line I need which retrieves the object from the parent form.
me.databinding. add("text",obj, PropertyName)
I think if I could work this out then I would solve the problem?
Regards
Simon
"Michael Maes" <mi*****@merlot .com> wrote in message news:%2******** ********@tk2msf tngp13.phx.gbl. ..
Hi Simon,
I might be entirely "off track" but if I understand your issue well, you could use a "IComponentChan geService".
I have created a Component which "Watches" all Components/Controls Added, Removed, Property Edited, ... on a Windows Form.
You could also use a "IComponentChan geService" directly in your Custom Control.
Having this done you could catch the "OnComponentAdd ed"-Event and put some code in it to set your bindings.
As I said: I'm not sure if I fully understood your problem, but if I did I think this might be a solution.
Regards,
Michael
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
Terry,
No it's a Windows Form..
It refers to my question last week about data binding to a simple object. Which works fine... except that you need to manually add some code to databind the text boxes to the object in your main form...
I'm trying to get is so that somehow this step is automated.
I've created an inherited text box that allows me to enter the name of the object and the property to bind to. This is the easy bit.. I'm still working on some way of getting the actual binding to be "automatic" ie not require the binding code to be added manually. I'd therefore like the binding code to be added automatically in the control intialization code where it sets all the control properties.. or alternatively, find some way of doing the binding from the control itself, once the object and property names are set...
Does this make sense?
Regards
Simon
"One Handed Man ( OHM - Terry Burns )" <news.microsoft .com> wrote in message news:eF******** ******@TK2MSFTN GP11.phx.gbl...
I assume this is a webform you are talking about. If so, each userconrol has its owen Page_load event. In this you should be able to bind and object in the parent container, dont have time to look up the properties now but in psuedo I imagine if would be something like.
Me.Parent.Contr ol.DataBindings .Add( Text, me, Property)
--
OHM ( Terry Burns )
. . . One-Handed-Man . . .
Time flies when you don't know what you're doing
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:OA******** ******@TK2MSFTN GP09.phx.gbl...
Hope somebody can help!
I want to automatically be able to add code to the initialize routine on a Windows form when I add a custom control that I've written to a form.
Specifically, I'm trying to data bind to a normal class. So I've extended the standard text box to include a field for object name and property name. I want to be able to add a line such as :
controlname.Dat aBindings.Add(" Text", objectName, "myPropertyName ")
I've tried using google and looking at the documentation but can't seem to find this... I don't know if there is an alternative way of doing it in the startup code of the form (I seem to have a thought that reflection could be used to get the instance of the object for the data binding code above but I can't work out how!!).
I would be grateful for any pointers.
Many thanks in advance
Simon
Thanks Michael,
I think I'll sit down when I have a quiet few hours and play with this... I think I have to get to grip with the concepts that you have outlined.
I'll let you know how I get on!
Regards
Simon
"Michael Maes" <mi*****@merlot .com> wrote in message news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
Hey Simon,
Does this fully answer your questions, because I came to the conclusion I didn't point out how to actually set your binding.
On the other hand, I was thinking if your DataObjects are on the Form or ComponentTray, you could set the Binding in Design-time through the Property-Window. Sure your DataObjects must all inherit from the same BaseClass, so you could do something like:
Dim _DataSource As YourBaseClass
<EditorBrowsabl e(EditorBrowsab leState.Always) , _
Category("Data" ), _
Browsable(True) , _
Bindable(True), _
Description("Th e DataObject to bind the TextBox to."), _
TypeConverter(" System.Windows. Forms.Design.Da taSourceConvert er, System.Design") , _
RefreshProperti es(RefreshPrope rties.All)> _
Public Overloads Property DataSource() As Object
Get
Return _DataSource
End Get
Set(ByVal Value As Object)
_DataSource = Value
End Set
End Property
Should you use this approach, then you have to fine-tune this property, because it's for Complex-DataBinding and as you know, the TextBox-Class has Simple DataBinding. Doing this you would get a dropdown-list with all possible DataObjects your TextBox can bind to.
Anyway: should you furthermore want to make use of the 'IComponentChan geService' then you would defently need Reflection to Get/Set some values of Components/Controls which you don't know of in Design-Time. Something like:
Private Sub OnComponentRena me(ByVal sender As Object, ByVal ce As ComponentRename EventArgs)
If IsNothing(ce) Or IsNothing(ce.Co mponent) Then Exit Sub
Dim ot As Object = ce.Component
Dim s As String = ot.GetType.ToSt ring
Dim p As PropertyInfo
' Set a Boolean-Property
p = ot.GetType.GetP roperty("MyDesi redPropertyName ")
p.SetValue(ot, False, Nothing)
' Set a String-Property
p = ot.GetType.GetP roperty("MyOthe rDesiredPropert yName")
p.SetValue(ot, ce.NewName, Nothing)
' Continue other logic
............... ............... ............... ............
............... ............... ............... ............
End Sub
Also keep in mind with the 'IComponentChan geService' that you address the right INSTANCE, because if you have two or more controls of the same type on a form, then it will loop through all those controls (even if this service is called from within a single control)!!
I wish you the best, and let me know if you could manage your goal.
Kind regards,
Michael
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:uA******** ******@tk2msftn gp13.phx.gbl...
Michael,
Thanks very much for digging out the code.
Regards
Simon
Dont forget to sleep J
All the best and "play a lot" with the 'IComponentChan geService'. It's powerfull to use (but a hell to Debug...Since it's IDE)
Michael
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
Thanks Michael,
I think I'll sit down when I have a quiet few hours and play with this... I think I have to get to grip with the concepts that you have outlined.
I'll let you know how I get on!
Regards
Simon
"Michael Maes" <mi*****@merlot .com> wrote in message news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
Hey Simon,
Does this fully answer your questions, because I came to the conclusion I didn't point out how to actually set your binding.
On the other hand, I was thinking if your DataObjects are on the Form or ComponentTray, you could set the Binding in Design-time through the Property-Window. Sure your DataObjects must all inherit from the same BaseClass, so you could do something like:
Dim _DataSource As YourBaseClass
<EditorBrowsabl e(EditorBrowsab leState.Always) , _
Category("Data" ), _
Browsable(True) , _
Bindable(True), _
Description("Th e DataObject to bind the TextBox to."), _
TypeConverter(" System.Windows. Forms.Design.Da taSourceConvert er, System.Design") , _
RefreshProperti es(RefreshPrope rties.All)> _
Public Overloads Property DataSource() As Object
Get
Return _DataSource
End Get
Set(ByVal Value As Object)
_DataSource = Value
End Set
End Property
Should you use this approach, then you have to fine-tune this property, because it's for Complex-DataBinding and as you know, the TextBox-Class has Simple DataBinding. Doing this you would get a dropdown-list with all possible DataObjects your TextBox can bind to.
Anyway: should you furthermore want to make use of the 'IComponentChan geService' then you would defently need Reflection to Get/Set some values of Components/Controls which you don't know of in Design-Time. Something like:
Private Sub OnComponentRena me(ByVal sender As Object, ByVal ce As ComponentRename EventArgs)
If IsNothing(ce) Or IsNothing(ce.Co mponent) Then Exit Sub
Dim ot As Object = ce.Component
Dim s As String = ot.GetType.ToSt ring
Dim p As PropertyInfo
' Set a Boolean-Property
p = ot.GetType.GetP roperty("MyDesi redPropertyName ")
p.SetValue(ot, False, Nothing)
' Set a String-Property
p = ot.GetType.GetP roperty("MyOthe rDesiredPropert yName")
p.SetValue(ot, ce.NewName, Nothing)
' Continue other logic
............... ............... ............... ............
............... ............... ............... ............
End Sub
Also keep in mind with the 'IComponentChan geService' that you address the right INSTANCE, because if you have two or more controls of the same type on a form, then it will loop through all those controls (even if this service is called from within a single control)!!
I wish you the best, and let me know if you could manage your goal.
Kind regards,
Michael
"Simon Verona" <ne**@aphrodite uk.com> wrote in message news:uA******** ******@tk2msftn gp13.phx.gbl...
Michael,
Thanks very much for digging out the code.
Regards
Simon This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Rhy Mednick |
last post by:
I'm creating a custom control (inherited from UserControl) that is displayed
by other controls on the form. I would like for the control to disappear
when the user clicks outside my control the same way a menu does. To do
this my control needs to get notified when the user tried to click off of
it. The Leave and LostFocus events of the UserControl work most of the time
but not always. For example, if they click on a part of the form...
|
by: Jaikumar |
last post by:
Hi,
1) I have created one windows application, In the main form ( form1) i have added one usercontrol (usercontrol1), In that user control i am drawing one image.
2) In the UserControl1 i am showing one transparent form (form3) when ever user preseed left mouse button.
3) The form3 has one transparent user control (usercontrol2) that paints circles. That measn the circles will show on top the usercontrol1 image.
4) The form3 border style...
|
by: Harry |
last post by:
Hello,
I have a page with a RadioButtonList and a PlaceHolder control. The
RadioButtonList's AutoPostBack attribute is set to TRUE and its
SelectedIndexChanged event loads one of three UserControls into the
PlaceHolder's child control collection depending upon which of the three
radio buttons is selected. Each of the three UserControls have postback
events themselves triggered by button clicks. The problem I'm having is
keeping track of...
|
by: Matthew |
last post by:
All,
I have searched google and the newsgroups but can't find anything the
same as what I am experiencing (though I may have missed something).
I have controls (textboxes) within UserControls which are not behaving
as I would expect. Specifically, if there is a command button external
to the usercontrol which is activated by a shortcut key (eg Alt-B),
the command button Click event handler code 'executes' even though the
textbox set...
|
by: Gary Shell |
last post by:
I am experiencing some strange behavior between a UserControl's validating event and a treeview control. Initially, I thought it was related to an issue in the Knowledgebase article 810852 (http://support.microsoft.com/kb/810852), but then I realized that the hotfix mentioned was in .Net v1.1, which I am using.
I took the sample from that article and recreated the situation I see in my application. (Code included below.)
If you run the...
| |
by: Will Gillen |
last post by:
I know this has probably been asked before, but I can't seem to find a solid
answer in any of the archives. First, before my question, please forgive my
limited knowledge of the event lifecycle and page loading/rendering
lifecycle....
Ok, now for the question:
I have an ASPX page (page.aspx), and I have a UserControl (control.ascx).
The UserControl has one textbox on the control, and one button control.
I have added a public property...
|
by: JohnR |
last post by:
In it's simplest form, assume that I have created a usercontrol,
WSToolBarButton that contains a button. I would like to eventually create
copies of WSToolBarButton dynamically at run time based on some
initialization information obtained elsewhere. Basically, I'm going to
create my own dynamic toolbar where the toolbarbuttons can change. I'm not
using the VB toolbar because of limitations in changing things like
backcolor (I can't get...
|
by: MeowCow |
last post by:
I have created a UserControl that encapsulates a third party data grid.
My goal was to create my own DataSource and DataMember properties that
forward the binding to the third party grid, then use binding like
normal.
The problem I am running into is that my UserControl ends up with a
different BindingContext then the ParentForm it is contained in and
thus all other controls on the parent form. (I want various controls
on the form to...
|
by: Mark |
last post by:
Hi,
I'm new to ASP.Net, but not to c#, so I'm finding some things a little
wierd in this internet based world, especially passing data from page
to page.
I have created a UserControl to search for data. It will first be
displayed on the homepage of my website and then on a search results
page. When the page loads up, I want to be able to repopulate the
options that were first selected on the homepage.
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look !
Part I. Meaning of...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it.
First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
| |
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth.
The Art of Business Website Design
Your website is...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own....
Now, this would greatly impact the work of software developers. The idea...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms.
Adolph will...
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...
| |