1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

duvida em forms vb.net

Discussão em 'Programação' iniciada por estrafalhote, 12 de Abril de 2007. (Respostas: 15; Visualizações: 2256)

  1. estrafalhote

    estrafalhote Power Member

    boas

    eu tenho um form principal que através de um menustrip acedo a todos os outros forms do programa e depois através do código seguinte faço com que todos eles apareçam "dentro" dele.

    só que se eu carregar num botão do menustrip e abrir um form atraves do 'form.show' e logo a seguir quiser abrir um outro novo este mesmo fica aberto e não o consigo fexar, já tentei fazer com que quando abrisse um form fichasse todos os outros mas não deu.
    agora gostaria que me dissessem como faço para que cada vez que abro um form no programa o anterior se feche.

    thanks:001:
     
  2. Cesaria

    Cesaria Power Member

    Bem só te posso ajudar em C#, mas o workaround deve ser pouco..Eu colocaria no form "Pai" algo do tipo:

    foreach (Form childForm in MdiChildren)
    {
    childForm.Close();
    }

    Mas podes sempre só retirar o form que se encontrar activo com o "ActiveMdiChild".. No entanto acho que os vbs maniacos podem-te ajudar melhor.. :)
     
    Última edição: 12 de Abril de 2007
  3. MRKawa600

    MRKawa600 Power Member

    Traduzindo a proposta do Cesaria, temos em VB.Net

    For Each childForm As Form In MdiChildren
    childForm.Close
    Next

    È uma das formas mais simples de o implementar, não requer grandes truques e resolve-se com 3 linhas.

    Cumps
     
  4. estrafalhote

    estrafalhote Power Member

    eu já tentei usar a dica que me deste mas não deu resultado por isso venho perguntar onde é que ponho isto, porque eu já tentei e não consegui porque o form que eu abria em primeiro continua sempre aberto

    o código que tenho no form todo é este:

     
    Última edição: 16 de Abril de 2007
  5. Cesaria

    Cesaria Power Member

    A ideia era colocares nos eventos click antes de abrir o form..
     
  6. estrafalhote

    estrafalhote Power Member

    eu pus em cada um dos botoes para abrir o form que desejado só que agora eles não aparecem dentro do form principal

    alguém me pode ajudar com isto?

    thanks
     
  7. Cesaria

    Cesaria Power Member

  8. estrafalhote

    estrafalhote Power Member

    pronto cá estou eu outravez com as minhas complicaçoes, já consegui fazer o que queria graças ao cesaria (muito obrigado pela ajuda) só que agora tenho outro problema é que com eu tenho todos os forms "secundarios" a aparecerem dentro do pricipal tenho um problema, é que como eu decidi que o programa ia ter um tamanho de 800:600 quando abro um childform alguns deles nao aparecem dentro do principal enquanto os outros aparecem e eu não sei o porque desta situaçao, se alguem me puder ajudar agradecia

    thanks
     
  9. Cesaria

    Cesaria Power Member

    A ver se percebo, eles aparecem dentro do Parent mas ultrapassa o Form? Ou ficam fora do form?
     
  10. estrafalhote

    estrafalhote Power Member

    uns aparecem dentro do parent mas aparecem a um canto ou uma cena assim enquanto outros aparecem assim:

    [​IMG]
     
  11. Cesaria

    Cesaria Power Member

    Bem aqueles que aparecem num canto dentro do parent também me aconteceu, mas no codigo que te dei contornei a cousa maximizando-os à mão (por código) e tirar a opção maximized no visual studio em design mode..Quanto a esse form sair do parent, bem isso cheira-me que não lhe disseste que ele era um filhote do pai :) ..
     
  12. estrafalhote

    estrafalhote Power Member

    1º eu tenho todos os forms como sendo "filhos" do pricipal como podes comprovar se reparares no código que pus uns tópicos atrás
    2º se não for pedir muito podias me arranjar o tal código de que falas é que eu tenho muita urgência em acabar este projecto

    3º eu deparei-me com um problema estúpido é que eu em casa no meu monitor uso uma resolução de 800:600 e quando corro o programa ele fica como que em fullscreen e o dito form fica por cima do "pai", mas quando mudo a resolução do monitor para 1024:768 ele fica por cima do pai e não ao lado como a 800:600

    thanks
     
  13. flaviorodrigues

    flaviorodrigues Power Member

    faz tipo form1.show 1
    isto poem o por "cima"
    Para fechares um form fazes unload me

    Espero ter ajudado pois nao percebi bem a tua duvida
     
  14. estrafalhote

    estrafalhote Power Member

    a minha duvida agora é como fazer para todos os child forms aparecerem dentro do form principal é que uns aparecem num canto outros por cima do form principal e por ai fora
     
  15. flaviorodrigues

    flaviorodrigues Power Member

    Nunca usei child foruns e tbm nunca usei vb net! so vb6! lol
     
  16. Fechar e abrir forms filhos

    A ideia é instanciar os forms filhos e controlar a sua existência.


    'O Form1 é o MDIForm
    Public Class Form1

    Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click

    'eliminar o Form2 aberto:
    elimina_form(Form2.Name)

    ' eliminar todos os filhos:
    'elimina_todos_os_filhos()

    Dim fr As Form = New Form2
    'O form é aberto em cima à esquerda. Há outras opcções.
    fr.StartPosition = FormStartPosition.Manual
    'O form é aberto com o tamanho de criação. Outras opções ...
    fr.WindowState = FormWindowState.Normal
    fr.MdiParent =
    Me
    fr.Show()
    End Sub

    Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click

    elimina_todos_os_filhos()

    Dim fr As Form = New Form3
    fr.StartPosition = FormStartPosition.WindowsDefaultLocation
    'fr.WindowState = FormWindowState.Normal
    fr.MdiParent = Me
    fr.Show()
    End Sub

    Private Sub elimina_form(ByVal nome As String)
    Dim frs() As Form = Me.MdiChildren
    Dim i As Integer
    For i = 0 To UBound(frs)
    If frs(i).Name = nome Then
    frs(i).Close()
    frs(i).Dispose()
    Exit For
    End If
    Next
    End Sub

    Private Sub elimina_todos_os_filhos()
    Dim frs() As Form = Me.MdiChildren
    Dim i As Integer
    For i = 0 To UBound(frs)
    frs(i).Close()
    frs(i).Dispose()
    Next
    End Sub

    End Class
     

Partilhar esta Página