Form1.Enable = True, but cannot set it back?

G

Guest

Hi,

I have 2 forms "Form1" & "Form2"
In Form1, there is a button to click to open Form2 and set Form1.Enabled =
False

However, when i finish using Form2, i cannot Enable Form1?

In Form2, i did something like:

Dim f As new Form1
f.enabled = True
Me.close( )

So it should Enable Form1 and close itself, but it just doesn't.
What am i doing wrong here?

please help, thanks
 
G

Greg Burns

Dim f As new Form1
f.enabled = True
Me.close( )

You are creating a new (second) instance of Form1 (that has never been
shown). You need to set the enabled property on a reference to the Form1
instance that was previously disabled...

Not sure what you are attempting with the enabled property. Would
f.ShowModal better serve your goal?

Greg
 
I

Imran Koradia

Not sure what you are attempting with the enabled property. Would
f.ShowModal better serve your goal?

I believe you meant f.ShowDialog :)

But yes - you're right - it seems f.ShowDialog would be the way to go for
the OP.


Imran.
 
G

Guest

Hi,
Both of my form is within a Parent Form, so i don't think i can use
ShowDialog.
but Anyway, the reason I want to use Enable is that my Form2 is smaller than
Form1, and when Form2 comes up, i want to disable everything on Form1 hence i
set the Form1.Enabled = False.

But the problem was once i finished with Form2, I cannot set Form1.Enabled =
True, because I cannot access the control of Form1 in Form2.

therefore i was playing around with
Dim f As new Form1
f.enabled = True
Me.close( )

but as you said its a wrong method of doing it.
So is it possible that you can give me an example of doing it correctly?
please

Many thanks for your help
Jon
 
I

Imran Koradia

Ok - since you want to do that anyway, there are several ways. Here's one:
Change the constructor (or you could event overload it - whichever way you
prefer) of Form2 to take in an argument which will be a reference to Form1
from which you are calling form2. Use that reference to enable/disable your
form.

Private m_frm As Form1

Public Sub New(ByVal frm As Form1)
MyBase.New()
m_frm = frm
End Sub

So, now your call to Form2 from Form1 would be:

Dim frm2 As New Form2(Me)
Me.Enabled = False
frm2.Show( )

And within your Form2, before you close down the form (or better - in the
Form2_Closing event), call:
m_frm.Enabled = True

I still think this isn't a very good idea. As Greg already mentioned, you
should look into showing up the second form as a modal form over the first
one since that is a more 'standard' design.

anyway, hope that helps..
Imran.
 
G

Guest

I still think this isn't a very good idea. As Greg already mentioned, you
should look into showing up the second form as a modal form over the first
one since that is a more 'standard' design.

Thankyou very much for helping me.

I am still quite new to programming, so I do not know which is the best way
to do it. You mentioned about showing the form as a model?

Do you mind if you can tell me more about it? the proper way of doing it?
Sorry to bother you so much, but i would like to know more.
many many thanks.
Jon
 
C

Chris Dunaway

Thankyou very much for helping me.

I am still quite new to programming, so I do not know which is the best way
to do it. You mentioned about showing the form as a model?

Do you mind if you can tell me more about it? the proper way of doing it?
Sorry to bother you so much, but i would like to know more.
many many thanks.
Jon

To show a form modally, just call the ShowDialog method instead of Show:

'In Form1:

Dim f As New Form2
f.ShowDialog(Me)


'Now Form1 is effectively 'disabled' until Form2 closes, no need to change
it's enabled property.

--
Chris

dunawayc[AT]sbcglobal_lunchmeat_[DOT]net

To send me an E-mail, remove the "[", "]", underscores ,lunchmeat, and
replace certain words in my E-Mail address.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top