FORM EM VB.NET
Como chamar um form sem conhecer seu nome, ou seja atraves de uma variavel.
Mesmo através de uma VARIAVEL, vc tem que saber o nome do FORM....
ora!
Como assim, seja mais especÃfico...
ora!
Como assim, seja mais especÃfico...
Vou explicar: Atraves de um menu dinamico quero chamar um form dinamicamente, ou seja, tenho uma tabela de cadastro dos forms, baseado na opção do menu escolhido, quero chamar o form correpondente !!!
no vb6 era assim:
public formobjects as new collection
dim var as string
dim frm as form
set var = varformescolhido - A variavel varformescolhido foi o form recupedado da tabela, que esta dentro desta variavel.
formobjects.add(var, var)
set frm = formobjects(var)
Porem isso não funciona no vb.net !!!!!!
Como eu faria ?
no vb6 era assim:
public formobjects as new collection
dim var as string
dim frm as form
set var = varformescolhido - A variavel varformescolhido foi o form recupedado da tabela, que esta dentro desta variavel.
formobjects.add(var, var)
set frm = formobjects(var)
Porem isso não funciona no vb.net !!!!!!
Como eu faria ?
Blz jow, cara, não encontrei nenhuma classe do VB.Net que manipula os forms, talvez exista, mas de qualquer forma, eu mesmo criei uma, bem simples...
O que ele faz?
Depois de via codigo vc ter adicionado os forms, é só executar o evento "abreForm" conforme o exemplo
O que ele faz?
Depois de via codigo vc ter adicionado os forms, é só executar o evento "abreForm" conforme o exemplo
Public Class GerenciaForms
'lista de forms adicionados
Public forms As New ArrayList
'enumeração para modo de form
Public Enum formModo
Modal
nonModal
End Enum
'função para abrir o form especifico, caso não exista, exibe
'uma mensagem de erro
Public Sub abreForm(ByVal formName As String, Optional ByVal modo As formModo = formModo.Modal, Optional ByVal state As System.Windows.Forms.FormWindowState = FormWindowState.Normal)
Dim i As Integer
Dim f As New Form
Dim encontrou As Boolean
For Each f In forms
If f.Name = formName Then
f.WindowState = state
If modo = formModo.Modal Then
f.ShowDialog()
Else
f.Show()
End If
encontrou = True
End If
Next
If encontrou = False Then
MessageBox.Show("Form não encontrado!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly)
End If
End Sub
End Class
'um exemplo de utilização da classe que gerencia:
'coloque em um evento qualquer
'para adicionar os forms
Dim f1 As New Form1
Dim f2 As New Form2
Dim f3 As New Form3
oGerFom.forms.Add(f1)
oGerFom.forms.Add(f2)
oGerFom.forms.Add(f3)
oGerFom.abreForm("nome_do_form", GerenciaForms.formModo.nonModal)
'atenção, para funcionar é necessário que o nome do form seja o mesmo que o
'especificado, para vc testar, antes, coloque um evento qualquer nos forms,
'se não a propriedade name não é atribuida a eles... (acho q é um bug)
Tópico encerrado , respostas não são mais permitidas