OK, unfortunately I have a problem.
As I said this works, but now the form2 is not recognized as an mdichild of
the container form. I tried to instantiate it in the conainer load event.
But that gives me some wierd behavior. What happens is that when I call
form 2 from form1, as soon as I complete some task in form 2 it returns to
form1 without asking. Here is the code in FormContainer:
Private Sub FormContainer_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
' ***********This is your code
If Not IsNothing(L3GlobalModule.frmSliceInfo) AndAlso
L3GlobalModule.frmSliceInfo.Visible = False Then 'This applies after form
has been closed
L3GlobalModule.frmSliceInfo = Nothing '(frmSliceInfo does not test
as nothing after being closed)
L3GlobalModule.frmSliceInfo = New FormSliceInfo
L3GlobalModule.frmSliceInfo.Show()
ElseIf IsNothing(L3GlobalModule.frmSliceInfo) Then 'This applies first
time form is opened
L3GlobalModule.frmSliceInfo = New FormSliceInfo
L3GlobalModule.frmSliceInfo.Show()
Else 'This applies if form is visible and user clicks the button on
Form1 again
L3GlobalModule.frmSliceInfo.BringToFront()
L3GlobalModule.frmSliceInfo.WindowState = FormWindowState.Maximized
End If
' ***********This is your code
L3GlobalModule.frmSliceInfo.MdiParent = Me
L3GlobalModule.frmSliceInfo.Location = Me.Location
L3GlobalModule.frmSliceInfo.Size = Me.Size
L3GlobalModule.frmSliceInfo.Dock = DockStyle.Fill
frmMain.MdiParent = Me
frmMain.Location = Me.Location
frmMain.Size = Me.Size
frmMain.Dock = DockStyle.Fill
'************************
......
Now in FormMain, I have a button called AdvancedPrice:
Private Sub btnAdvancedPrice_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnAdvancedPrice.Click
' ***********This is your code
If Not IsNothing(L3GlobalModule.frmSliceInfo) AndAlso
L3GlobalModule.frmSliceInfo.Visible = False Then 'This applies after form
has been closed
L3GlobalModule.frmSliceInfo = Nothing '(frmSliceInfo does not test
as nothing after being closed)
L3GlobalModule.frmSliceInfo = New FormSliceInfo
L3GlobalModule.frmSliceInfo.Show()
ElseIf IsNothing(L3GlobalModule.frmSliceInfo) Then 'This applies first
time form is opened
L3GlobalModule.frmSliceInfo = New FormSliceInfo
L3GlobalModule.frmSliceInfo.Show()
Else 'This applies if form is visible and user clicks the button on
Form1 again
L3GlobalModule.frmSliceInfo.BringToFront()
L3GlobalModule.frmSliceInfo.WindowState = FormWindowState.Maximized
' ***********This is your code
In FormSliceInfo, I am having the user pick a text file, I then read it and
fill a multiline text box with it. As soon as I read the file it goes back
to FormMain. I stepped through it and saw that it was doing so as soon as
the textbox was filled.
What is going on? Please help, I am flummoxed!
Thanx,
--
Anil Gupte
www.keeninc.net www.icinema.com
"Charlie" <c2****@yahoo.comwrote in message
news:92**********************************@microsof t.com...
To add a module right click on the project name in the Solution Explorer,
then click Add Module. A module is lot like a class except it cannot be
instantiated. The object variables that you create do not take up much
memory. They merely act as pointers to your object.
In Module1 you should declare, but not instantiate your form object
variables
Public F2 as Form2
I am still in the stone age working in Framework 1.0, so the following
code
may be antiquated or even obsolete for 2.0 users...
but I tested this code and it works for me...
It would go in a form from where you want to open Form2, and where you
have
a button called Button1.
'************
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
If Not IsNothing(Module1.F2) AndAlso Module1.F2.Visible = False
Then
'This applies after form has been closed
Module1.F2 = Nothing '(F2 does not test as nothing after being
closed.)
Module1.F2 = New Form2()
Module1.F2.Show()
ElseIf IsNothing(Module1.F2) Then 'This applies first time form is
opened
Module1.F2 = New Form2()
Module1.F2.Show()
Else 'This applies if form is visible and user clicks the button on
Form1 again
Module1.F2.BringToFront()
End If
End Sub
'*****************
You don't have to put Form2 in a module. You could declare an object
variable as Form2 wherever you wanted to use it. The module in the code
is
just acting as a handy repository.
You could name the instance of Form2 in Module1 as Form2 instead of F2, if
you like.
You could carry this over to a menu item (instead of the button) on your
MDI, and it would be accessible to any open form in the MDI form.