Inquiridor
Form não abre 2 vezes!

Pergunta
-
Todas as Respostas
-
Oi !
Vou responder baseado em windows forms, mas acho que a causa é a mesma : Os formulários são classes suicidas. Quando são fechados, se destroem internamente (fazem dispose) e por isso não abrem mais.
Faça a abertura da seguinte forma :
Code Snippetif isnothing(frm) orelse frm.isdisposed then
frm=new form1()
end if
frm.show
[]'s
-
-
-
-
-
-
Oi !
Testei o isdisposed e realmente não funciona, vou verificar porque.
Você não mostrou ainda seu código para abrir o formulário, mas testei aqui um simples form2.show e funcionou perfeitamente, com o form abrindo quantas vezes eu desejasse.
[]'s
-
segue:
Code SnippetPrivate Sub mnCadReceitas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnCadReceitas.Click
'Dim frm As New Form
'If IsNothing(frm) Then 'frm = frmCadReceita 'End IffrmCadReceita.Show()
frmCadReceita.Show()
End Sub -
Oi !
Por que o show 2 vezes ?
Quando você diz "não abre 2 vezes" você quer dizer que deseja exibir duas instâncias dele, é isso ?
Esse caso, do show 2 vezes, realmente não vai funcionar. Você precisaria de algo como :
Code Snippetdim frm as new frmCadReceita
dim frm2 as new frmCadReceita
frm.show
frm2.show
[]'s
-
-
-
o código todo
Code SnippetImports
System.Data.SqlServerCeImports
System.IOPublic
Class frmPrincipal Private Sub frmPrincipal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim vCaminho As String Dim vConexao As String Dim sql As StringvCaminho = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
'Cria base de dados SQLvConexao =
"Data Source=" & vCaminho & "\financ.sdf" Try If Not File.Exists(vCaminho & "\financ.sdf") Then Dim SqlCeEngine As New SqlCeEngine(vConexao)SqlCeEngine.CreateDatabase()
Dim conn As New SqlCeConnection(vConexao)conn.Open()
'Cria tabela Receitassql =
"CREATE TABLE Receitas (IdReceita int Primary Key NOT NULL, NmReceita nvarchar(40) NOT NULL)" Dim cmd As New SqlCeCommand(sql, conn)cmd.ExecuteNonQuery()
'Cria tabela Despesassql =
"CREATE TABLE Despesas (IdDespesa int Primary Key NOT NULL, NmDespesa nvarchar(40) NOT NULL)"cmd.CommandText = sql
cmd.ExecuteNonQuery()
conn.Close()
End If Catch ex As ExceptionMessageBox.Show(ex.Message)
End TryfrmCadReceita.Show()
End
Class -
-
verdade!
Code SnippetPublic
Class frmCadReceita Private Sub frmCadReceita_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadInputPanel1.Enabled =
True End Sub Private Sub frmCadReceita_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.ClosedInputPanel1.Enabled =
False Me.Close() End SubEnd
Class -
-
-
-
-
-