Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
545
Assunto : VB.NET
Titulo: Recriando a coleção FORMs do VB 6

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



O VB 6 possuia uma coleção de formulários global chamada Forms. Sempre que um formulário era carregado ele era automaticamente inserido na coleção Forms. Assim a qualquer momento em que desejássemos poderiamos fazer um laço na coleção forms para manipular os formulários que estivessem carregados.

Uma coleção assim não existe no VB.NET. Porém existe a possibilidade de criarmos essa coleção nós mesmos.

O primeiro passo na criação de uma coleção assim é criarmos uma coleção personalizada que apenas aceite receber formulários em seu conteúdo. Para isso precisamos criar uma nova classe que herde as características da classe CollectionBase e faça um Shadow em alguns métodos para restringir o tipo de dados. Veja :

Public Class FormsCollection
Inherits CollectionBase

Public Shadows Function Add(ByVal FormObject As Form) As Form
MyBase.List.Add(FormObject)
Return FormObject
End Function

Public Shadows Sub Remove(ByVal FormObject as Form)
MyBase.List.Remove(FormObject)
End Sub
End Class

Feito isso devemos instanciar esta coleção assim que a aplicação se iniciar. Devemos então utilizar uma Sub Main em um módulo para iniciar a aplicação, veja :

Module StartHere
Public Forms As FormsCollection

Sub Main()
Forms = New FormsCollection()
Application.Run(New Form1())
End Sub
End Module

Em cada formulário deveremos codificar o constructor e o destructor de forma a que o formulário seja inserido na coleção forms no momento em que for criado e retirado no momento em que for destruido. Veja um exemplo :

Public Sub New()
MyBase.New()

'This call is required by the Windows Form Designer.
InitializeComponent()

'Add any initialization after the InitializeComponent() call.
Forms.Add(Me)
End Sub

Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
Forms.Remove(Me)
End Sub


Para simplificar isso tudo podemos criar uma Class Library e inserir nela este formulário já codificado e a classe FormsCollection. Então em nossos projetos precisaremos apenas fazer referência a essa Class Library e utilizar o recurso de herança entre os forms para termos essa funcionalidade.

Quando desejarmos utilizar a coleção Forms, basta utilizar um For/Each, como abaixo :

Dim LoopForm As Form
Dim LoopControl As Control
For Each LoopForm In Forms
For Each LoopControl In LoopForm.Controls
MessageBox.Show(LoopControl.Name)
Next
Next


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 10/14/2016 9:46:00 PM
nome: pRUMsFOBjyluFtxYY
email: jimos4581rzt@hotmail.com
comentário:
insj0D http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

data: 10/14/2016 9:34:00 PM
nome: LawFWWxvPzTEHh
email: jimos4581rzt@hotmail.com
comentário:
zxffQ8 http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

data: 8/12/2016 5:05:00 AM
nome: oBQrTCwKmvJWbe
email: jimos4581rt@hotmail.com
comentário:
mgPzIo http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br