By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,019 Members | 1,037 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,019 IT Pros & Developers. It's quick & easy.

Opening Forms.

P: n/a
I have an application that starts with a Module (Sub Main) that calls a few forms in order. When I close the next to last form, the last form is called and closes immediately. I have application.run(me) in the load event for that form and it opens fine if I call it at the beginning of the module. Here is the module code....

Module mdlLogon
Sub main()
Dim OpenFrmDbConnect As New FrmDBConnect()
OpenFrmDbConnect.Show()

If Form1.ds = Nothing Then
Dim Result As DialogResult
Result = MessageBox.Show("You must setup the database connections, Click Ok to do so or Cancel to quit the program.", "Initial Setup",
MessageBoxButtons.OKCancel, _MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification)

If Result = DialogResult.OK Then
Dim OpenFrmSetup As New FrmSetup()
OpenFrmSetup.Show()

ElseIf Result = DialogResult.Cancel Then
Exit Sub
End If
End If

Dim OpenFrmLogon As New FrmLogon()
OpenFrmLogon.Show()

' This is the call that dies below..

Dim OpenForm1 As New Form1()
OpenForm1.Show()

End Sub
End Module

This is driving me crazy!! Please someone help!!!!

Nov 21 '05 #1
Share this Question
Share on Google+
13 Replies


P: n/a
"Shawn" <sh**********@ccci.org> schrieb:
I have an application that starts with a Module (Sub Main) that calls a few
forms in order. When I close the next to last form, the last form is called
and closes immediately.


\\\
Public Module Program
Public Sub Main()
Dim f As New Form1()
f.Show()
Application.Run()
End Sub
End Module
///

In the project properties, select 'Sub Main' as startup object. Place the
code below in a button's 'Click' event handler:

\\\
Dim f2 As New Form2()
f2.Show()
Me.Close()
///

You can exit the application by calling 'Application.ExitThread'. Take a
look at the 'ApplicationContext' class too.

--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>

Nov 21 '05 #2

P: n/a
This pretty much looks like what I already have... Am I missing something?

"Herfried K. Wagner [MVP]" <hi***************@gmx.at> wrote in message
news:O%****************@TK2MSFTNGP09.phx.gbl...
"Shawn" <sh**********@ccci.org> schrieb:
I have an application that starts with a Module (Sub Main) that calls a fewforms in order. When I close the next to last form, the last form is calledand closes immediately.


\\\
Public Module Program
Public Sub Main()
Dim f As New Form1()
f.Show()
Application.Run()
End Sub
End Module
///

In the project properties, select 'Sub Main' as startup object. Place the
code below in a button's 'Click' event handler:

\\\
Dim f2 As New Form2()
f2.Show()
Me.Close()
///

You can exit the application by calling 'Application.ExitThread'. Take a
look at the 'ApplicationContext' class too.

--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>

Nov 21 '05 #3

P: n/a
"Shawn" <sh**********@ccci.org> schrieb:
This pretty much looks like what I already have... Am I missing something?


Maybe the reason that your code doesn't work is that you are calling
'Application.Run' in the form's 'Load' event handler -- which will already
require a message pump.

--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>

Nov 21 '05 #4

P: n/a
Yes.

As Herfried indicated, you should have the Application.Run in the Sub Main,
not in the Load event handler of a form.

It might seem that the difference is 'being picky', but the difference is
VERY important.
"Shawn" <sh**********@ccci.org> wrote in message
news:%2****************@TK2MSFTNGP12.phx.gbl...
This pretty much looks like what I already have... Am I missing something?

"Herfried K. Wagner [MVP]" <hi***************@gmx.at> wrote in message
news:O%****************@TK2MSFTNGP09.phx.gbl...
"Shawn" <sh**********@ccci.org> schrieb:
>I have an application that starts with a Module (Sub Main) that calls a few >forms in order. When I close the next to last form, the last form is called >and closes immediately.


\\\
Public Module Program
Public Sub Main()
Dim f As New Form1()
f.Show()
Application.Run()
End Sub
End Module
///

In the project properties, select 'Sub Main' as startup object. Place
the
code below in a button's 'Click' event handler:

\\\
Dim f2 As New Form2()
f2.Show()
Me.Close()
///

You can exit the application by calling 'Application.ExitThread'. Take a
look at the 'ApplicationContext' class too.

--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>


Nov 21 '05 #5

P: n/a
Well, I made the changes and it still works that same. I like having the
application.run code in the module, so thanks, but it still does not keep
Form1 open. I even tried creating a new blank form just to see if there was
some code in form1 I was not seeing, but the same thing happens.

Also, if I replace the call to form1 with a second call to FrmLogon, it
calls it twice, but nothing else seems to start in that last position...

"Stephany Young" <noone@localhost> wrote in message
news:ew**************@TK2MSFTNGP14.phx.gbl...
Yes.

As Herfried indicated, you should have the Application.Run in the Sub Main, not in the Load event handler of a form.

It might seem that the difference is 'being picky', but the difference is
VERY important.
"Shawn" <sh**********@ccci.org> wrote in message
news:%2****************@TK2MSFTNGP12.phx.gbl...
This pretty much looks like what I already have... Am I missing something?
"Herfried K. Wagner [MVP]" <hi***************@gmx.at> wrote in message
news:O%****************@TK2MSFTNGP09.phx.gbl...
"Shawn" <sh**********@ccci.org> schrieb:
>I have an application that starts with a Module (Sub Main) that calls a
few
>forms in order. When I close the next to last form, the last form is

called
>and closes immediately.

\\\
Public Module Program
Public Sub Main()
Dim f As New Form1()
f.Show()
Application.Run()
End Sub
End Module
///

In the project properties, select 'Sub Main' as startup object. Place
the
code below in a button's 'Click' event handler:

\\\
Dim f2 As New Form2()
f2.Show()
Me.Close()
///

You can exit the application by calling 'Application.ExitThread'. Take

a look at the 'ApplicationContext' class too.

--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>



Nov 21 '05 #6

P: n/a
Shawn,

I never use an application start or a sub main in VBNet form program

A login form is typical a modal form in the load event of a main form. When
you do this in pseudo than

dim frm as New myloginform
(Here you can use the dialogOK if, i don't do it now)
frm.showdialog
if frm.pw not is correct then
me.close 'or whatever
end if
frm.dispose

When the password is not correct than will the login form the only one that
was showed, because the form is showed after the formload.

I hope this helps,

Cor

Nov 21 '05 #7

P: n/a
Cor,

"Cor Ligthert" <no************@planet.nl> schrieb:
A login form is typical a modal form in the load event of a main form.
When you do this in pseudo than

dim frm as New myloginform
(Here you can use the dialogOK if, i don't do it now)
frm.showdialog
if frm.pw not is correct then
me.close 'or whatever
end if
frm.dispose

When the password is not correct than will the login form the only one
that was showed, because the form is showed after the formload.


Mhm... Why should the main form be loaded if there is no guarantee that it
will be shown at all? If the login form is shown, why is it shown modally
if there are no other forms open?

--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>

Nov 21 '05 #8

P: n/a
Herfried
Mhm... Why should the main form be loaded if there is no guarantee that
it will be shown at all? If the login form is shown, why is it shown
modally if there are no other forms open?


Probably it is not even loaded.
This are the first instructions.

However why not?

And even when it takes time, when it is an unauthorised action than it will
even stop the ones when it takes time.

(And authorised it cost nothing more).

However why not?

Cor
Nov 21 '05 #9

P: n/a
Well, I have the Sub Main Module doing a few different things. The program
will support online and offline modes so that different forms will be
started if the database can not be contacted. So, during the module startup,
I run a form that displays a staus bar and that form opens a new thread that
tests the ability to connect to the database. It then sets a variable that
tells the program which mode it is in.

What really has me confused is the fact that I can call the login box form
several times at the end of the module and it will stay open each time, but
anything else will close.

I thought about starting the Form1 and setting the opacity to 0 while the
login for runs, but it is a bit sloppy to me.

"Cor Ligthert" <no************@planet.nl> wrote in message
news:uq**************@TK2MSFTNGP15.phx.gbl...
Herfried
Mhm... Why should the main form be loaded if there is no guarantee that
it will be shown at all? If the login form is shown, why is it shown
modally if there are no other forms open?

Probably it is not even loaded.
This are the first instructions.

However why not?

And even when it takes time, when it is an unauthorised action than it

will even stop the ones when it takes time.

(And authorised it cost nothing more).

However why not?

Cor

Nov 21 '05 #10

P: n/a
Shawn,
I thought about starting the Form1 and setting the opacity to 0 while the
login for runs, but it is a bit sloppy to me.

Why as long as you do not tell Form1.show somewhere it will not be showed.

Cor
Nov 21 '05 #11

P: n/a
>>
Why as long as you do not tell Form1.show somewhere it will not be showed.

Or it should be your main form in the way I do it, than it will be showed
directly after that the Load event is processed.

Cor
Nov 21 '05 #12

P: n/a
Well, I took your advice and started it from Form1. I set the opacity to 0
so it would not show and set a shared variable that changes from 0 to 1 when
the logon box is gone. I then set a timer to run and check that variable
after the other forms close. If the variable is 1, then the opacity is set
to 100 and the form shows. This is not as clean as I was hoping, but it
works fine.

Thanks for all the insight guys!!!

Shawn

"Cor Ligthert" <no************@planet.nl> wrote in message
news:uk**************@TK2MSFTNGP10.phx.gbl...

Why as long as you do not tell Form1.show somewhere it will not be showed.

Or it should be your main form in the way I do it, than it will be showed
directly after that the Load event is processed.

Cor

Nov 21 '05 #13

P: n/a
Shawn,

That opacity setting should not be needed. I really do only

Private sub load form
dim frm as new loginform
'
'
me.close when wrong.
end sub

The main form is never showed.

Cor
Nov 21 '05 #14

This discussion thread is closed

Replies have been disabled for this discussion.