Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Form.ShowDialog() or Form.ShowDialog(this)?

Tags:

c#

.net

winforms

I heard that if I call form.ShowDialog() without specifying the owner, then there can be a case when I will not see the dialog form on screen (it will be hidden with other windows). Is it true? I used ShowDialog() without specifying the owner hundreds of times and I never had any problems with that.

Can you please explain in which situation I could get the described problem?

UPDATE:

Well, I did many experiments and I couldn't get any real unexpected problems with using ShowDialog() (without specifying the owner).

So I think it's just rumors that ShowDialog() can lead to problems. If you don't agree - give me a code sample please that leads to a problem.

like image 342
nightcoder Avatar asked May 03 '09 12:05

nightcoder


People also ask

What is the difference between form show () and form ShowDialog ()?

Show() method shows a windows form in a non-modal state. ShowDialog() method shows a window in a modal state and stops execution of the calling context until a result is returned from the windows form open by the method.

What is the purpose of ShowDialog () method?

ShowDialog shows the window, disables all other windows in the application, and returns only when the window is closed. This type of window is known as a modal window. Modal windows are primarily used as dialog boxes.

How do I close a ShowDialog form?

To close a form, you just need to set the form's DialogResult property (to any value by DialogResult. None ) in some event handler. When your code exits from the event handler the WinForm engine will hide the form and the code that follows the initial ShowDialog method call will continue execution.


1 Answers

One annoyance I found with ShowDialog() vs ShowDialog(this).

Run the TestApp, show the newform.ShowDialog(), click "show Desktop" on your taskbar or Quick launch toolbar, click on the TestApp on the taskbar. It shows the Mainform. You have to do an Alt-Tab to get to your newform.

VS

Run the TestApp, show the newform.ShowDialog(this), click "show Desktop" on your taskbar or Quick launch toolbar, click on the TestApp on the taskbar. It shows the newform on top.

like image 114
Sun Avatar answered Sep 30 '22 07:09

Sun