Usuário com melhor resposta
Como chamar um formulario com o metodo show dentro do formulario principal?

Pergunta
-
ola bom dia!
Eu tenho um formulario com datagridview, estou apartir do outro formulario quando tento exibir para preencher as textbox so consigo fazer isso usando o Shodialog, so que usando o show dialog ele não permite fazer mais nada enquanto o formulario estiver aberto, como faço para abrir em modo normal, exibir e permitir trabalhar sem bloquear?
eu fiz assim, mas não ta a dar certo:
eu fiz assim:
PrivateSub TxtCodigoProvincia_KeyDown(senderAsObject, eAsKeyEventArgs)Handles TxtCodigoProvincia.KeyDown
'aqui ao premirmos a tecla f2 abrimos o formulario com a lista dos paises
If e.KeyCode =Keys.F2Then
'exibimos o formulario lista de actividades, e a variavel deste formulario foi declarada no cabeçario do formulario
FrmListaProvincias.MdiParent = FrmPRINCIPAL
listFormProvincias.ShowDialog()
'aqui exibimos os dados nas textbox
TxtCodigoProvincia.Text = listFormProvincias.DGVListaProvincia.CurrentRow.Cells(0).Value.ToString
TxtCodigoContinenteProvincia.Text = listFormProvincias.DGVListaProvincia.CurrentRow.Cells(1).Value.ToString
TxtCodigoPaisProvincia.Text = listFormProvincias.DGVListaProvincia.CurrentRow.Cells(2).Value.ToString
TxtSiglaProvincia.Text = listFormProvincias.DGVListaProvincia.CurrentRow.Cells(3).Value.ToString
TxtDescriçãoProvincia.Text = listFormProvincias.DGVListaProvincia.CurrentRow.Cells(4).Value.ToString
listFormProvincias.DGVListaProvincia.Columns.Clear()
' listFormProvincias.DGVListaProvincia.Rows.Clear()
EndIf
'Aqui ao premirmos a tecla escap limpamos as textboxes
If e.KeyCode =Keys.EscapeThen
LimparProvincia()
listFormProvincias.DGVListaProvincia.Columns.Clear()
' listFormProvincias.DGVListaProvincia.Rows.Clear()
EndIf
aqui o codigo do botão que exibe a lista dos paises, eu não quero exibir os formularios em show dialog. porque em sho dialog não permite fazer mais nada enquanto estiver ativo o formulario.
PrivateSub btnLocalizarPaisProvincia_Click(senderAsObject, eAsEventArgs)Handles btnLocalizarPaisProvincia.Click
TxtCodigoPaisProvincia.Focus()
FrmListaPaises.MdiParent = FrmPRINCIPAL
listFormPaises.ShowDialog()
TxtCodigoPaisProvincia.Text = listFormPaises.DGVListaPaises.CurrentRow.Cells(0).Value.ToString
listFormPaises.DGVListaPaises.Columns.Clear()
' listFormPaises.DGVListaPaises.Rows.Clear()
EndSub
PrivateSub btnLocalizarPaisProvincia_Click(senderAsObject, eAsEventArgs)Handles btnLocalizarPaisProvincia.Click
TxtCodigoPaisProvincia.Focus()
FrmListaPaises.MdiParent = FrmPRINCIPAL
listFormPaises.ShowDialog()
TxtCodigoPaisProvincia.Text = listFormPaises.DGVListaPaises.CurrentRow.Cells(0).Value.ToString
listFormPaises.DGVListaPaises.Columns.Clear()
' listFormPaises.DGVListaPaises.Rows.Clear()
EndSub
alguem pode ajudar?
Obrigado
Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server
Respostas
-
Você pode fazer algo assim:
TxtCodigoPaisProvincia.Focus() FrmListaPaises.MdiParent = FrmPRINCIPAL listFormPaises.Show() AddHandler listFormPaises.Closed, New EventHandler(Sub(s As Object, ee As EventArgs) TxtCodigoPaisProvincia.Text = listFormPaises.DGVListaPaises.CurrentRow.Cells(0).Value.ToString listFormPaises.DGVListaPaises.Columns.Clear() 'listFormPaises.DGVListaPaises.Rows.Clear() End Sub)
Herbert Lausmann
- Sugerido como Resposta Herbert Lausmann quinta-feira, 20 de fevereiro de 2014 14:26
- Marcado como Resposta danielbeneditorosa quinta-feira, 20 de fevereiro de 2014 21:05
Todas as Respostas
-
-
-
Oi.
var form = new Windows.Form(); form.Show()
Só que dessa maneira o programa não vai esperar o dialogo fechar para ir para a proxima linha.
Então isso não vai funcionar... você vai ter que pensar entra outra maneira.
listFormPaises.ShowDialog() TxtCodigoPaisProvincia.Text = listFormPaises.DGVListaPaises.CurrentRow.Cells(0).Value.ToString
-
É isso que você quer?
Private Sub btnLocalizarPaisProvincia_Click(senderAsObject, eAsEventArgs)Handles btnLocalizarPaisProvincia.Click TxtCodigoPaisProvincia.Focus() FrmListaPaises.MdiParent = FrmPRINCIPAL listFormPaises.Show() 'Use a função Show TxtCodigoPaisProvincia.Text = listFormPaises.DGVListaPaises.CurrentRow.Cells(0).Value.ToString listFormPaises.DGVListaPaises.Columns.Clear() ' listFormPaises.DGVListaPaises.Rows.Clear() End Sub Private Sub btnLocalizarPaisProvincia_Click(senderAsObject, eAsEventArgs)Handles btnLocalizarPaisProvincia.Click TxtCodigoPaisProvincia.Focus() FrmListaPaises.MdiParent = FrmPRINCIPAL listFormPaises.Show() 'Use a função Show TxtCodigoPaisProvincia.Text = listFormPaises.DGVListaPaises.CurrentRow.Cells(0).Value.ToString listFormPaises.DGVListaPaises.Columns.Clear() ' listFormPaises.DGVListaPaises.Rows.Clear() End Sub
Herbert Lausmann
-
bom dia e obrigado!
eu quero assim porque quando eu uso o
listFormPaises.ShowDialog()
TxtCodigoPaisProvincia.Text = listFormPaises.DGVListaPaises.CurrentRow.Cells(0).Value.ToStringo formulario não abre dentro do formulario principal , mas funciona normalmente sem problemas.
agora quando faço assim:
Private Sub btnLocalizarPaisProvincia_Click(senderAsObject, eAsEventArgs)Handles btnLocalizarPaisProvincia.Click
TxtCodigoPaisProvincia.Focus()
FrmListaPaises.MdiParent = FrmPRINCIPAL
listFormPaises.Show() 'Use a função Show
TxtCodigoPaisProvincia.Text = listFormPaises.DGVListaPaises.CurrentRow.Cells(0).Value.ToString
listFormPaises.DGVListaPaises.Columns.Clear()
' listFormPaises.DGVListaPaises.Rows.Clear()
End Sub
Private Sub btnLocalizarPaisProvincia_Click(senderAsObject, eAsEventArgs)Handles btnLocalizarPaisProvincia.Click
TxtCodigoPaisProvincia.Focus()
FrmListaPaises.MdiParent = FrmPRINCIPAL
listFormPaises.Show() 'Use a função Show
TxtCodigoPaisProvincia.Text = listFormPaises.DGVListaPaises.CurrentRow.Cells(0).Value.ToString
listFormPaises.DGVListaPaises.Columns.Clear()
' listFormPaises.DGVListaPaises.Rows.Clear()
End Subele abre dentro do formulario principal, so que esta sempre a selecionar o primeiro registro do datagridview, não sei o porque esta a acontecer isso, no meu datagrid tem este codigo que se calhar é onde esta o problema:
codigo do datagridview:
Private Sub DGVListaPaises_DoubleClick(sender As Object, e As EventArgs) Handles DGVListaPaises.DoubleClick
'aqui estamos a dizer que ao fazermos duplo clique selecionamos o dado e fechamos o formulario
Me.Tag = DGVListaPaises.Focused.ToString()
Me.DialogResult = DialogResult.OK
Me.Close()
End Sub
Private Sub DGVListaPaises_KeyPress(sender As Object, e As KeyPressEventArgs) Handles DGVListaPaises.KeyPress
'Aqui estamos a dizer que quando premimos a tecla enter selecionamos o dado no datagrid e fechamos o formulario
If e.KeyChar = Chr(13) Then
Me.Tag = DGVListaPaises.Focused.ToString()
Me.DialogResult = DialogResult.OK
Me.Close()
End If
End Sub
sera que devo mexer alguma coisa no datagridview?
bom dia e obrigado.
ou se existir uma maneira de xibir o formulario em showdialog dentro do formulario principal...
Obrigado
Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server
-
Entenda uma coisa:
Quando você chama o ShowDialog() ele só retorna a execução para o método que o chamou depois do form ser fechado.
TxtCodigoPaisProvincia.Focus() FrmListaPaises.MdiParent = FrmPRINCIPAL listFormPaises.ShowDialog() TxtCodigoPaisProvincia.Text = listFormPaises.DGVListaPaises.CurrentRow.Cells(0).Value.ToString 'Só depois do form ser fechado é que isso será executado. listFormPaises.DGVListaPaises.Columns.Clear() ' listFormPaises.DGVListaPaises.Rows.Clear()
Agora usando o método Show() ele abre o form e ja continua a execução:
TxtCodigoPaisProvincia.Focus() FrmListaPaises.MdiParent = FrmPRINCIPAL listFormPaises.Show() TxtCodigoPaisProvincia.Text = listFormPaises.DGVListaPaises.CurrentRow.Cells(0).Value.ToString ' Ao abrir o form continua este código em seguida, sem esperar ele fechar... listFormPaises.DGVListaPaises.Columns.Clear() ' listFormPaises.DGVListaPaises.Rows.Clear()
Creio que deve ser este o seu problema.
Herbert Lausmann
-
-
Você pode fazer algo assim:
TxtCodigoPaisProvincia.Focus() FrmListaPaises.MdiParent = FrmPRINCIPAL listFormPaises.Show() AddHandler listFormPaises.Closed, New EventHandler(Sub(s As Object, ee As EventArgs) TxtCodigoPaisProvincia.Text = listFormPaises.DGVListaPaises.CurrentRow.Cells(0).Value.ToString listFormPaises.DGVListaPaises.Columns.Clear() 'listFormPaises.DGVListaPaises.Rows.Clear() End Sub)
Herbert Lausmann
- Sugerido como Resposta Herbert Lausmann quinta-feira, 20 de fevereiro de 2014 14:26
- Marcado como Resposta danielbeneditorosa quinta-feira, 20 de fevereiro de 2014 21:05
-
-
como fazer o mesmo usando o metodo show! é possivel aplicar isso usando o metodo show?
Testou o código que eu postei? Ele deve ser a solução para você usar o método Show()...
Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server
Herbert Lausmann
-
-
Bom dia Herbert Lausmann, muito obrigado!
este codigo resolveu o meu problema, e esta assim:
Private Sub btnLocalizarPaisProvincia_Click(sender As Object, e As EventArgs) Handles btnLocalizarPaisProvincia.Click
TxtCodigoPaisProvincia.Enabled = True
TxtCodigoPaisProvincia.Focus()
listFormPaises = New FrmListaPaises
listFormPaises.MdiParent = FrmPRINCIPAL
Try
listFormPaises.Show()
AddHandler listFormPaises.Closed, New EventHandler(Sub(s As Object, ee As EventArgs)
TxtCodigoPaisProvincia.Text = listFormPaises.DGVListaPaises.CurrentRow.Cells(0).Value.ToString
listFormPaises.DGVListaPaises.Columns.Clear()
'listFormPaises.DGVListaPaises.Rows.Clear()
End Sub)
Catch ex As Exception
MsgBox("erro : " & ex.Message, MsgBoxStyle.Exclamation)
End Try
End Sub
Obrigado e muito obrigado!
Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server
- Sugerido como Resposta Herbert Lausmann quinta-feira, 20 de fevereiro de 2014 14:26
-
Se a resposta solucionou seu problema por favor marque-a como resposta para fechar a thread e colaborar com o fórum.
Herbert Lausmann
- Editado Herbert Lausmann quinta-feira, 20 de fevereiro de 2014 14:31