none
Form não habilita com enabled = true RRS feed

  • Pergunta

  • Boa noite!
    Está acontecendo um problema que antes não acontecia:

    Tenho um Form1 (IsMdiContainer = True) que chama o Form2. Dentro do Form2 tem um botão que coloca o Form2.enabled = False e chama o Form3. Quando fecho o Form3 (me.close) e coloco o Form2.enabled = True, o Form2 continua com enabled = False.

    Tenho outro sistema que faz exatamente a mesma coisa e funciona. 

    Não sei o que pode estar acontecendo.

    Se alguém tiver alguma ideia eu agradeço muito.

    Obrigado!

    Pozzato

    Em tempo: Estou usando o Visual Studio 2013 e .NET Framework 4.5.1


    Pozzato


    • Editado Pozzato terça-feira, 1 de dezembro de 2015 00:22
    terça-feira, 1 de dezembro de 2015 00:20

Respostas

  • Pozzato, a questão é: tu precisas referenciar o Form2 no Form3 (é possível que tenha uma forma de pegar o Form2 pelo Form1, porém nunca mexi muito com MdiParent, então não saberia dizer).

    Fiz um exemplo aqui que funciona perfeitamente:

    Form1:

    Public Class Form1
        Private Sub AbrirForm2_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim frm2 As New Form2()
            frm2.MdiParent = Me
            frm2.Show()
        End Sub
    End Class

    Form2:

    Public Class Form2
        Private Sub AbrirForm3_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim frm3 As New Form3()
            frm3.MdiParent = Me.MdiParent
            frm3.frm2 = Me
            Me.Enabled = False
            frm3.Show()
        End Sub
    End Class

    Form3:

    Public Class Form3
        Public frm2 As Form2
    
        Private Sub FecharForm3_Click(sender As Object, e As EventArgs) Handles Button1.Click
            frm2.Enabled = True
            Me.Close()
        End Sub
    End Class

    Att., Rafael Simor

    • Marcado como Resposta Pozzato terça-feira, 1 de dezembro de 2015 02:34
    terça-feira, 1 de dezembro de 2015 02:05

Todas as Respostas

  • Boa noite.

    Tu tens a referência correta do segundo Form no Form3?

    Se sim, já tentaste colocar o Form2.Enabled = true antes do Me.Close()?


    Att., Rafael Simor

    terça-feira, 1 de dezembro de 2015 00:59
  • De modo bem resumido:

    Do Form1 (MDI Pai) para Form2:

    Dim F2 As New Form2()
    F2.MdiParent = Me
    F2.Show()

    Do Form2 para Form3:

    Me.Enabled = False
    F3.MdiParent = Form1
    F3.Show()

    Do Form3 de volta para o Form2:

    Form2.Enabled = True
    Me.Close()

    Funcionava em outro sistema. Não funciona mais.

    Obrigado pelo interesse em ajudar.

    Sds.

    Pozzato


    Pozzato

    terça-feira, 1 de dezembro de 2015 01:25
  • Tente:

    'Do Form2 para Form3:
    
    Me.Enabled = False
    F3.MdiParent = Me
    F3.Show()
    
    'Do Form3 de volta para o Form2:
    
    MdiParent.Enabled = True
    Me.Close()
    Caso seja necessário ter a referência do Form1 no Form3, crie duas propriedades no Form3: uma apontando para a referência do Form1 e outra para o Form2.


    Att., Rafael Simor

    terça-feira, 1 de dezembro de 2015 01:29
  • Não deu certo Rafael.

    F3.MdiParent = Me no Form2 gera erro, pois Form2 não é MdiContainer.

    Colocando no Form2:

    F3.MdiParent = F1 

    F3.Show()

    E no Form3:

    MdiParentEnabled = True

    Me.Close

    Roda sem erro, mas o Form2 continua Enabled = False.

    Acho que a solução vai ser usar o ShowDialog, mas nos testes que fiz, o form chamado desta forma não fica preso ao form MdiParent. Fica solto.

    Será que tem como colocar o Form preso ao MdiParent?

    Grato.

    Pozzato


    Pozzato

    terça-feira, 1 de dezembro de 2015 01:46
  • Pozzato, a questão é: tu precisas referenciar o Form2 no Form3 (é possível que tenha uma forma de pegar o Form2 pelo Form1, porém nunca mexi muito com MdiParent, então não saberia dizer).

    Fiz um exemplo aqui que funciona perfeitamente:

    Form1:

    Public Class Form1
        Private Sub AbrirForm2_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim frm2 As New Form2()
            frm2.MdiParent = Me
            frm2.Show()
        End Sub
    End Class

    Form2:

    Public Class Form2
        Private Sub AbrirForm3_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim frm3 As New Form3()
            frm3.MdiParent = Me.MdiParent
            frm3.frm2 = Me
            Me.Enabled = False
            frm3.Show()
        End Sub
    End Class

    Form3:

    Public Class Form3
        Public frm2 As Form2
    
        Private Sub FecharForm3_Click(sender As Object, e As EventArgs) Handles Button1.Click
            frm2.Enabled = True
            Me.Close()
        End Sub
    End Class

    Att., Rafael Simor

    • Marcado como Resposta Pozzato terça-feira, 1 de dezembro de 2015 02:34
    terça-feira, 1 de dezembro de 2015 02:05
  • Perfeito meu amigo!!! 

    É isso mesmo.

    E você ainda diz que não mexeu muito com MdiParent. Imagino se mexesse. rsrsrs

    Muito obrigado pela ajuda.

    Forte abraço!


    Pozzato

    terça-feira, 1 de dezembro de 2015 02:21