Array
(
)

Problema nas chamadas de formulário com VB.Net

Carlosfeju
|
MVP
    26 set 2016

Boa noite colegas. Estou com o seguinte problema no VB.Net : tenho um formulário inicial, por exemplo, de login que chama um MDI que por sua vez chama um form2, que por sua vez chama um form3, que por sua vez chama um form4. Quando o formulário inicial é o MDI, as chamadas ocorrem normalmente, mas que a chamada inicial é o frmInicial, por exemplo, o form de login, o form2 não consegue chamar o form3. O que posso fazer para que funcione normalmente começando pelo form de login?
#Código

Public Class frmInicial
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.Hide()
        Dim formInicial As New mdiPrincipal
        formInicial.Show()
    End Sub
End Class

'frm mdiPrincipal (é um MDI)
Public Class mdiPrincipal
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim form As New Form2
        form.MdiParent = Me
        form.Show()
    End Sub
End Class


Public Class Form2
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim form1 As New Form3
        form1.MdiParent = mdiPrincipal
        form1.Show()
    End Sub
End Class


Public Class Form3
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim form1 As New Form4
        form1.MdiParent = mdiPrincipal
        form1.Show()
    End Sub
End Class


Public Class Form4
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    End Sub
End Class

Carlosfeju
|
MVP
    27 set 2016

Olá pessoal. O meu problema é que tenho inicialmente um form de login do sistema.

#Código

    Private Sub btnProsseguir_Click(sender As Object, e As EventArgs) Handles btnProsseguir.Click

        Dim form = New frmPrincipal
        Me.Hide()
        form.Show()

    End Sub



Quando passo por ele tenho um form MDI com os menus do sistema onde seleciono um form de cadastro,

#Código
    Private Sub CadastroDeProcessoToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CadastroDeProcessoToolStripMenuItem.Click
        Dim form = New frmListaProcessos
        form.MdiParent = Me
        form.Show()
    End Sub


Neste eu mostro todos os registros em um DataGridView.

#Código
Private Sub preencherGrid()

        'Variáveis para medir tempo
        Dim tInicio As DateTime
        Dim tFim As DateTime
        Dim tDiferenca As TimeSpan

        tInicio = Now

        With dgvListaProcessos

            'Carregar os dados
            .DataSource = Nothing
            .Rows.Clear()
            .Columns.Clear()
            carregaDadosLINQ()

            'Formatando o DataGridView

            'Coluna do código do Processo
            .Columns(0).HeaderText = "Código"
            .Columns(0).Width = 50
            .Columns(0).HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter
            .Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
            .Columns(0).Name = "Codigo"

            'Assunto do Processo
            .Columns(1).HeaderText = "Assunto"
            .Columns(1).Width = 585
            .Columns(1).Name = "Assunto"

            'Botão de manutenção
            Dim btn As New DataGridViewButtonColumn()
            .Columns.Add(btn)
            btn.HeaderText = "Manutenção"
            btn.Text = "Click aqui"
            btn.Name = "btn"
            btn.UseColumnTextForButtonValue = True
            'btn.Width = 30

        End With

        tFim = Now
        tDiferenca = tFim.Subtract(tInicio)
        lblTempoGasto.Text = "Tempo: " & tDiferenca.TotalSeconds.ToString("0.0") & " segundos"

    End Sub


Quando o usuário clica em um dos registros, deveria abrir um outro form com todos os dados do registro selecionado, que são muitos, para fazer a manutenção, conforme rotina abaixo:

#Código
    Private Sub dgvListaProcessos_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvListaProcessos.CellContentDoubleClick

        Dim linha As Integer
        Dim nIdProcesso As Integer

        linha = dgvListaProcessos.CurrentRow.Index
        nIdProcesso = dgvListaProcessos.Rows(linha).Cells("Codigo").Value

        Dim form As New frmDadosProcesso(nIdProcesso)
        form.MdiParent = frmPrincipal
        form.Show()

    End Sub


Mas o form não aparece. Pelo debug verifico que o form frmDadosProcesso é iniciado, mas não sei porque não aparece. Mas quando eu retiro o form de login, ou seja, início é pelo MDI eu consigo abrir o form frmDadosProcesso.

#Código
Public Sub New(nIdProc As Integer)

        ' Esta chamada é requerida pelo designer.
        InitializeComponent()

        ' Adicione qualquer inicialização após a chamada InitializeComponent().
        nIdProcesso = nIdProc
        mostrarDados()

    End Sub


O que eu posso fazer para resolver este problema?