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
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click'Title of Control1CType(Me.ParentForm, Form1).control1.Text = "Title bar text"End Sub
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
Visual Basic.NET.NET ProgrammingProgramming
Last Comment
Ess Kay
8/22/2022 - Mon
kaufmed
Create a new interface definition which both child forms will implement. This interface will provide a way to access the control1.Text.
Public Interface IControl1 Property Control1Text() As StringEnd Interface
Public Class Form2 : Form Implements IControl1 ' Original code Public Property Control1Text() As String Get Return Me.control1.Text End Get Set Me.control1.Text = value End Set End PropertyEnd ClassPublic Class Form3 : Form Implements IControl1 ' Original code Public Property Control1Text() As String Get Return Me.control1.Text End Get Set Me.control1.Text = value End Set End PropertyEnd Class
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click 'Title of Control1 CType(Me.ParentForm, IControl1).Control1Text = "Title bar text"End Sub
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.
Ess Kay
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
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...
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