?
Solved

Application.Run and Form.ShowDialog

Posted on 2004-04-01
4
Medium Priority
?
376 Views
Last Modified: 2006-11-17
Hello there. I'll be very grateful is anyone could shed light on this problem I'm having. I'm using VB .net

This is my sub main:

while ApplicationLoop
      Dim Frm1 as new Form1()
      if Frm1.showdialog() = OK then
          Dim Frm2 as new Form2()
          Application.run(Frm2)
          Frm2.dispose()
          Frm2 = nothing
      else
          ApplicationLoop = false
      end if
end while

The application runs with the intended results during the first loop - show dialog, wait for user input, if user clicks ok then display Frm2.

However, when the user closes Frm2, the second loop starts, the dialog is shown, but doesnt wait for the user input. The dialog is immediately closed, frm.showdialog evaluates to not ok and the application exits.

I'm quite sure its caused by Application.run(Frm2) because if I remove it then the dialog is displayed and waits for user input. Could someone explain why and perhaps offer a suggestion?

Thanks.
0
Comment
Question by:sis5
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 27

Expert Comment

by:Dabas
ID: 10738740
Hi sis5,
Try disposing and setting to nothing Frm1 too, after the End if

Dabas
0
 
LVL 48

Accepted Solution

by:
AlexFM earned 750 total points
ID: 10738875
Did you try to call Frm2 like Frm1 - using showdialog?
0
 

Author Comment

by:sis5
ID: 10738992
I tried setting Frm1 to dispose and nothing, but that didn't work

I tried the showdialog too, but that didn't work either, until I got rid of an Application.Exit in Frm2. Then it worked fine.

Thanks for the solution AlexFM, but could some one explain or provide a link to what actually happens with showdialog, Application.run and Application.Exit?

Thanks.
0
 
LVL 48

Expert Comment

by:AlexFM
ID: 10740078
I made this test, it works:

Module Module1
    Public Sub Main()
        Dim f1 As Form1
        Dim f2 As Form2

        f1 = New Form1
        f2 = New Form2

        While True
            If f1.ShowDialog() <> DialogResult.OK Then
                Exit While
            End If

            f2.ShowDialog()
        End While

    End Sub
End Module
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The object model of .Net can be overwhelming at times – so overwhelming that quite trivial tasks often take hours of research. In this case, the task at hand was to populate the datagrid from SQL Server database in Visual Studio 2008 Windows applica…
Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased…
Suggested Courses

800 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question