Ess Kay
asked on
CType(Me.ParentForm, Form1).control1.Text = "Title bar text"
i have two forms
Form1 and Form2
Form1 has a panel. It loads form2
Form2 has code like this
Needless to say this works fine
Here comes the problem:
I added a new form: Form3
also with a panel with Form2 inside
now i have a problem with this CType(Me.ParentForm, Form1).control1.Text
I would also like to have this fixed to accept any future parent form, instead of writing something like
if parentform.name = "form1" then
CType(Me.ParentForm, Form1).control1.Text = "bla1"
else if parentform.name = "form2" then
CType(Me.ParentForm, Form2).control1.Text = "bla bla2"
else if .....to infiniti
CType(Me.ParentForm, FormInfini).control1.Text = "blablablafiniti"
end if
please help
Form1 and Form2
Form1 has a panel. It loads form2
Form2 has code like this
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
'Title of Control1
CType(Me.ParentForm, Form1).control1.Text = "Title bar text"
End Sub
Needless to say this works fine
Here comes the problem:
I added a new form: Form3
also with a panel with Form2 inside
now i have a problem with this CType(Me.ParentForm, Form1).control1.Text
I would also like to have this fixed to accept any future parent form, instead of writing something like
if parentform.name = "form1" then
CType(Me.ParentForm, Form1).control1.Text = "bla1"
else if parentform.name = "form2" then
CType(Me.ParentForm, Form2).control1.Text = "bla bla2"
else if .....to infiniti
CType(Me.ParentForm, FormInfini).control1.Text = "blablablafiniti"
end if
please help
You might as well swap the CType for a DirectCast too. For reference types they are functionally identical and DirectCast is marginally more performant. It will make minimal difference in this case but it's a good habit to get into.
ASKER
@kaufmed, that was just an example. the real Form2 has over two thousand lines and tons of controls ( grids, textboxes, labels, trees, you name it)
I can't sit there and recreate all controls, nor the form itself
i need something to return the parentForm
Like the If statement, but dynamiccally
I can't sit there and recreate all controls, nor the form itself
i need something to return the parentForm
Like the If statement, but dynamiccally
You might try:
Dim c() As Control = Me.ParentForm.Controls.FindControl("control1", True)
If c IsNot Nothing AndAlso c.Length > 0 Then
c(0).Text = "bla bla2"
End If
ASKER
How will that return the parentform
It won't, but based on your original code snippet you're after a control that resides on the parent form. That is what the above should do.
ASKER
the problem is that i have many differnt controls.
instead of this
if parentform.name = "form1" then
CType(Me.ParentForm, Form1).control1.Text = "bla1"
else if parentform.name = "form2" then
CType(Me.ParentForm, Form2).control1.Text = "bla bla2"
else if .....to infiniti
CType(Me.ParentForm, FormInfini).control1.Text = "blablablafiniti"
end if
i need to cast the parent form as an object
and replace the form1, form2 ...form3456...
so i can use something like
CType(Me.ParentForm, FormObject).control1.Text
CType(Me.ParentForm, FormObject).grid.datasourc e= somesource
CType(Me.ParentForm, FormObject).tree.node.remo ve(node(1) )
and so on
instead of this
if parentform.name = "form1" then
CType(Me.ParentForm, Form1).control1.Text = "bla1"
else if parentform.name = "form2" then
CType(Me.ParentForm, Form2).control1.Text = "bla bla2"
else if .....to infiniti
CType(Me.ParentForm, FormInfini).control1.Text = "blablablafiniti"
end if
i need to cast the parent form as an object
and replace the form1, form2 ...form3456...
so i can use something like
CType(Me.ParentForm, FormObject).control1.Text
CType(Me.ParentForm, FormObject).grid.datasourc
CType(Me.ParentForm, FormObject).tree.node.remo
and so on
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Awesome, youre the man
Open in new window
Then implement that interface on both forms:
Open in new window
Finally, cast to the interface type:
Open in new window