.net - How To Wait For Form To Close Without ShowDialog()
May 9, 2012
In my program I use WebBrowser control for OAuth. It's located on vk_auth_window form. So in the code I call vk_auth_window.WebBrowser1.Navigate(vkauthurl). If authentication is successful, I silently get token, but if user is not authenticated a form vk_auth_window is showed to them to enter username and password. To check this I catch _DocumentComplete event and check for the right URL. I need no other code being executed until the user finished authentication or closed authentication form. ShowDialog() does the trick, but it somehow hides cursor from username and password fields in WebBrowser control. So I introduced a variable Dim showform as Boolean=True in and set it to False from the _DocumenComplete event and in the main code I use infinite loop.
While showform
System.Threading.Thread.Sleep(100)
Application.DoEvents()
End While
However it makes userinput slow due to thread sleeps. And If i remove them, it loads CPU quite a lot. Is there a better way to wait for form to close? What is it?
I am creating a VB program that has a Main class, and 4 windows forms. Each of the forms has a back and a next button to navigate trough the forms. The problem is that when I hit next (Here is the code)
Private Sub continueButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles continueButton.Click
I have a little log in screen that pops up if a user selects a certain item on my main form. How do I get my code to stop executing til my log in form closes?This is what I am doing so far. Basically i want o execute the code after MyLogin closes.
BMSSplash.MyLogin.Show() If isLoggedIn Then BMSSplash.MyBuddy.Show() Cursor.Current = Cursors.WaitCursor End If
My end result is that I want to launch another setup project after the first setup project closes. The problem is that since setup.exe is just a wrapper for the msi package.WaitForExit is quitting when the setup.exe is finished and not foo.msi.
Using Process As New System.Diagnostics.Process Process.StartInfo.FileName = "setup.exe" Process.StartInfo.WindowStyle = ProcessWindowStyle.Normal
I'm trying to run a batch file via VB and I need to wait for it to complete/exit before progressing. The issue I believe I am having is that when a batch file is executed, it opens cmd.exe and not the batch file.
This is what I am executing with VB My.Computer.FileSystem.DeleteFile(My.Application.Info.DirectoryPath & "PingCheckmachines.txt") FileCopy(My.Application.Info.DirectoryPath & "machines.txt", My.Application.Info.DirectoryPath & "PingCheckmachines.txt") Dim psi As New ProcessStartInfo(My.Application.Info.DirectoryPath & "PingCheckgo.bat") psi.RedirectStandardError = True psi.RedirectStandardOutput = True psi.CreateNoWindow = False .....
The problem I am having is that it will just delete ping.bat before it completes. How do I go about monitoring the process from the batch file I call. Then once it exits, continue with the script?
In my MDI Application code I have a form that launches a second form then hides itself until the spawned form closes. It works great unless I choose to close the application while the spawned form is still up.
The following is some example code.
Dim ChildForm as New frmTaskWindow With { .MDIParent = Me, .AddingNew = True } ChildForm.Show Me.Hide()
[Code].....
Me.Show() ' error occurs here because my form is already closed by the system. Is there a way to get around this without just an error catcher?
I have a form being called form several forms using ShowDialog().
1. Is there a way for called form to know which form called it by receiving a code or key from the calling form?
2. The calling form has a gridview. How can the called form pick up a column's value from the currently highlighted row in gridview in the calling form?
I'm having an interesting issue that I can't reproduce on a different project, but can consistently on this one. I have no clue what might be causing it, but am hoping that someone may have seen it before.
I have a main form, from which I run a series of checks. On this form, I have a listview control. Because of some issues with the refreshing of this listview control, I had to create my own messagebox. It's just a form that displays some text ( it also happens to look nicer than MsgBox; in my opinion, anyways ). It's been working great for months, until recently.
My problem is that on my main form's load event, I run this check, which returns an error within a try/catch block. I then call my custom messagebox with a message. It in turns calls it's ShowDialog() function.
In any other situation ( after the main form has been loaded ), I have no problems. The messagebox goes on the screen and behaves appropriately ( ie: waits for my input and acts as a modal dialog ( stops execution of my main form's thread ) ). However, on this onload event, my messagebox comes up and goes away almost immediately afterwards.
I've traced it all the way to the showdialog() call. For no explicable reason, it appears to skip right over this call, without me doing anything on the form.
Here's what the inner trace looks like ( when I put a breakpoint on the onclosing event for this messagebox form ):
I have a main form that has a button with which a smaller form is shown. Think of the smaller form as the Find/Replace dialog in many applications, such as Notepad. It's important that the form is (what I believe is called) modal. What I mean is that it always stays on top of the main form. I ensure that by calling the Show method with "Me" as the owner argument. Whenever the small form loses focus it will not disappear into the background but stay visible (albeit out of focus). If you don't understand open up Notepad and have a look at the behavior of the Find/Replace dialog.
Here's my problem: instead of actually closing the form when the X is pressed, I want it to simply Hide itself, so its position and the state of any controls (checkboxes etc) is preserved automatically.To achieve this I simply cancel the FormClosing event and Hide it:
vb.net Private Sub Form2_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
[code]....
To show the form, I use the following (note the (Me) to make the main form the owner of the form; this ensures that it remains visible even when it is out of focus):
vb.net Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Form2.Show(Me) End Sub
Now. When I run my project, and open the Form2 (small form), then hide it again (by 'closing' it), I can no longer close the main form (Form1)! It seems the main form cannot close when the small form still exists (albeit invisible)...?? When I don't use the Me argument in the Show method, I don't get the behavior I want. I know I can set the TopMost property to True but that will also cause it to become visible on top of all the other forms, even windows not part of my application.
I have a form that I am using to search for records in a dataset, it has a text box for entry of the search criteria and a 'Search' button to initiate the editing of the entry and .Filter on the BindingSource. This is one form in a project with many, when I show it using .ShowDialog it always disappears, (not visible and not loaded) after the 'Search' button is clicked, I have stepped through and there is no .Hide or .Close that it encounters, it performs all of the logic correctly but control is returned to the main form it was shown from. When I use the .Show method, I do not have this problem.
I converted this app from VB6. I have 2 forms. Form1 instantiates Form2 via a Menu Item.I am having trouble getting Form2 to end when clicking close (X). If Form2 is 'idle' it closes fine; but if I am in a loop processing anything all the events fire, but it continues processing in Form2. I've tried messing with Dispose, Close, Application.Exit, Application.ExitThread. My last attempt was creating my own event to fire back to Form1 and dispose Form2 -- and it hits it but Form2 is still running. What is the deal? BTW if I use just Show vs ShowDialog -- Form2 just blinks and disappears.[code]
I converted this app from VB6. I have 2 forms. Form1 instantiates Form2 via a Menu Item.I am having trouble getting Form2 to end when clicking close (X). If Form2 is 'idle' it closes fine; but if I am in a loop processing anything all the events fire, but it continues processing in Form2. I've tried messing with Dispose, Close, Application.Exit,pplication.ExitThread. My last attempt was creating my own event to fire back to Form1 and dispose Form2 -- and it hits it but Form2 is still running. What is the deal? BTW if I use just Show vs ShowDialog -- Form2 just blinks and disappears.
I have three form First Form is MDi form and Second Form Is Child Form and third Form Is small form.The small form conatin DataGridView searcher for name and I want whe I press the Event Mous Click he copy value from cell"column" of DataGridView to Child Form..[code]
I have a new developer that is calling Showdialog (in VB.NET) on a Windows Forms form without first creating an instance of the form.How is this possible? I don't see a shared method for ShowDialog...
I'm not crazy about this approach either as it seems to me that the dialog will not be disposed until the application exits.What am I missing? Is this a new best practice?OK, Form2 is just a blank form.Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click Form2.ShowDialog() End Sub End Class
So you know how when you call "Form.ShowDialog" from where ever you call it, it blocks until the form being displayed closes. And then the function returns whatever result it was.I want to know how to block like, but without a form, yet still have the "main ui thread".Basically I have this long process that needs to thread out and do several things... and it's heavily event based. It jumps between two threads, the main ui thread, and it's own background thread. The main ui thread needs to have access so that I can randomly open different dialog boxes for things... sometimes they're just windows asking to hit OK or Cancel to continue, others it's to perform some action, etc etc.
But there is NO central form related to it. It's a complete background thread running that randomly hops over to the main ui thread for things.Right now I have this class I designed called lets say "DoJobProcessor". On it is a function called "BeginDoJob" that threads off from the thread pool... when ever I need to jump back I use a ManualResetEvent to block on the background thread, jump over to to the main thread with "invoke" and passing a reference to the MRE, then release the block when done there and continue on on this background thread.
All while this is going on I just set the form I'm trying to block the main ui thread from managing by just setting its Enabled property false.It all feels just messy and annoying... and I was just writing something using ShowDialog and I was like... HEY, what if I could block this BeginDoJob method, hi-jack the main ui thread, then let that function return the result when done instead of having this "Complete" event with the return value in it. It's obviously possible because ShowDialog does it, but I don't know how.
This way the job I'm performing isn't always waiting for the main ui thread, instead its the other way around... the ui thread waiting for it, the way it aught to be. Show something, branch off do some stuff and just idle the display while it does it, come back show something else, branch off and just idle while it does that.
I have problems with a form and load event.My form manage items that can be added, deleted or modified. In load code, I initialize all vars to cero. This is OK to be ready to add items.
My problem is with modify and delete. To carry this, I must load vars from a source. So, in my foreing code I have this:
[Code]...
My problem is that when showdialog is called, all data which were loaded from duplicar funct is put again to cero. How can I avoid this and load correct data into the form.
I am writing an application in VB2008 with several forms. From Form1 I open a new form with me.hide() and then form2.showdialog(). The system works but in form2 the application runs without screendisplay until the program waits for a user input. So first all databases are processed. Meanwhile no screen is visible for the user. Sometimes this takes about 5 seconds. I would like the user to see the build up screen directly.
I want to open a form as modal without using showdialog()Problem with showdialog() is we can not open the form as mdi child with it. i want to open few forms as modal but as mdi child forms. but i want to make sure user cannot go anywhere else without closing thst form.if we set parent form enabled = false then i can not set it as mdi child otherwise that form also becomes enabled=false.
if we write showdialog() then so many form icons will appear on taskbar. it we open as mdi child then only one icon appear i don't want to appear so many icons on taskbar so i want to open as mdi child but as modal
for eg. Mainform = mdi form from mainform open formA = as mdi child of main form (but modal) from formA open formB as child (modal) from formB open formC as child (modal). if i use showdialog() then so many form icons on taskbar. h2007
im using visual basic.net and this is my problem i have 2 form which have a two datagridview . when i update the datagridview in the form 2 its working fine and when i exit it in the form 1 its also update , but when im trying to to click again the edit button(from form 1) the program is automatically exit or crash.
I've come across a situation where I try to run a simple line of code in a method Dim res As DialogResult = frmOptions.ShowDialog()but nothing happens. The dialog box will not appear. If I run this method from another location in the code it executes fine (i.e. displays the form in dialog mode and code executes fine thereafter). Hence, it may be the way in which I arrive at this code that is causing my problem, but I cannot see to find what is wrong.
When I pause the debugger the line of code is highlighted in green but I can't see to step over it or into it what may cause this to happen, or what I should be looking for that might be causing the problem??
Dim res As DialogResult = frmOptions.ShowDialog()but nothing happens. The dialog box will not appear. If I run this method from another location in the code it executes fine (i.e. displays the form in dialog mode and code executes fine thereafter). Hence, it may be the way in which I arrive at this code that is causing my problem, but I cannot see to find what is wrong.
I have set up a notify icon for my form. I want to make it so that when the user clicks the close button that it doesn't close the form it just takes it to shows the notify icon. They can exit the program from the notify icon. Can someone tell me how to keep it running?
sometimes, when I use Form.close() when debugging my program, although the form is closed, the application is still running. I noticed this behaviour when using the msgbox function.
I try to transfer a vb6 application to vb2010. In the vb6 I start with a login panel that the user enter uid and password autenticate with the DBServer if ok show application main menu and close the login form. the order of the me.close() after the mainform.show() does not change, The application ends.