Open child form from dialog form

  • Thread starter Thread starter Simon Abolnar
  • Start date Start date
S

Simon Abolnar

I would like to know how to open child form from dialog form.

Thanks for help!

Simon
 
Simon Abolnar said:
I would like to know how to open child form from dialog form.

Thanks for help!

Simon

Is the child form to be a child of the dialog form or of another form?

Armin
 
Child form is meant that is child of MDI form.

Thanks for help!

Simon
 
Simon Abolnar said:
Child form is meant that is child of MDI form.


Does the dialog form know the MDI form or is it a multi-purpose form that
can be used from different places? That's a question of abstraction. What
does the dialog form do? Will it be closed after the child Form has been
opened? Which results can it pass back to the caller?

Armin
 
My dialog form is login form. When application start,
dialog is open through ShowDialog.

If login is successful, I would like to close my dialog form and open other
child form of MDI.

Thanks for help!

Simon
 
Simon Abolnar said:
My dialog form is login form. When application start,
dialog is open through ShowDialog.

Is the login form the startup object of the project?
If login is successful, I would like to close my dialog form and open
other child form of MDI.

This sounds like the MDI form is the startup form.

Which one is true?

I ask to find the best solution.

Armin
 
Simon,

Why do you than open it at such a late moment.

I open this in the loadevent of my mdiContainer form. (There is than not
showed anything yet).

\\\
dim frm as new myLoginForm
if frm.showdialog = dialogresult.false me.close
///

This is not how I do it, however the shortest way I know to show it you to
give the idea.

Cor
 
MDI form is startup form.
In Load event I show dialog (login) form.

Thanks for help!

Simon
 
Simon Abolnar said:
MDI form is startup form.
In Load event I show dialog (login) form.

IMO this is not good design. I guess the login form also has a cancel button
and if it's pushed, the program exits, right? But then it's too late because
the MDI form is about to be shown. I'd changed it this way:

shared sub main

dim loginform as new loginform

if loginform.showdialog = dialogresult.ok then
application.run(new mdiform)
end if

end sub

Despite, I still don't know why you want to open an MDI child form from the
login form. Is the child form always to be displayed at startup or does it
depend on any selection within the login form?


Armin
 
1. Thank you very much for your suggestion.
I tried to aplied your solution.
It works OK, except I can't close login dialog.
When I press OK button, application (MDI form) run, with dialog form still
present.
I don't know where to close dialog form. in sub main or in btnOK event and
how?

I changed your solution to:

Shared Sub main()
Dim loginform As New frmPrijava

loginform.btnOK.DialogResult = loginform.DialogResult.OK

If loginform.ShowDialog = loginform.DialogResult.OK Then

Application.Run(New frmReferatNET)

End If

End Sub

2. Despite, I still don't know why you want to open an MDI child form from
the
login form. Is the child form always to be displayed at startup or does
it
depend on any selection within the login form?

Yes, I would like to display MDI child form after successfull login. It
depends on user.

Thanks for help!

Simon
 
Simon Abolnar said:
1. Thank you very much for your suggestion.
I tried to aplied your solution.
It works OK, except I can't close login dialog.
When I press OK button, application (MDI form) run, with dialog form
still present.
I don't know where to close dialog form. in sub main or in btnOK
event and how?

I changed your solution to:

Shared Sub main()
Dim loginform As New frmPrijava

loginform.btnOK.DialogResult = loginform.DialogResult.OK

If loginform.ShowDialog = loginform.DialogResult.OK Then

Application.Run(New frmReferatNET)

End If

End Sub


The code looks ok. I can not reproduce the problem. When I click the button,
the loginform disappears and the MDI form is shown. Setting the button's
dialogresult property should be sufficient to close the modal form when the
button is clicked. From here I can't see what causes this behavior. Try to
call Me.Close explicitly in the button's click event.
2. Despite, I still don't know why you want to open an MDI child
form from the
login form. Is the child form always to be displayed at startup
or does it
depend on any selection within the login form?

Yes, I would like to display MDI child form after successfull login.
It depends on user.


There are some design questions involved. The solution I'd probably choose
is this one:

Public Class App

Private Shared f_Username As String

Public Shared ReadOnly Property Username() As String
Get
Return f_Username
End Get
End Property

Shared Sub main()

Dim LoginForm As New LoginForm

If LoginForm.ShowDialog = DialogResult.OK Then
f_Username = LoginForm.txtUsername.Text
LoginForm.Dispose()
LoginForm = Nothing

Application.Run(New MDIForm)
End If

End Sub

End Class


I've set the button's dialogresult property in the designer.



MDIForm:

Private Sub MDIForm_Load( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load

Select Case App.Username
'.... open child
End Select

End Sub


Armin
 
Well. I still have one little problem.
If user press OK button, but username or password is invalid, how can I
found out that login failed in sub main?

Thanks for your time!

Simon
 
Simon Abolnar said:
Well. I still have one little problem.
If user press OK button, but username or password is invalid, how can
I found out that login failed in sub main?

In the button's click event, if you want to keep the Form open, set
Dialogresult = Dialogresult.None. If you want to close it but without
continuing the app, set it to Dialogresult.Cancel.

Armin
 

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

Back
Top