Usuário com melhor resposta
Objetos e Variaveis

Pergunta
-
Boa Tarde Galera,
Na verdade nunca perguntei nada aqui no forum, eh minha primeira vez, e a minha pergunta eh por um motivo meio maluco, mas fiquei curioso sobre a possibilidade.
A linguagem abordada nesse caso eh o vb.net do visual studio 2013
queria saber, se alguém já fez ou se sabe como fazer chamadas ou alterações de propriedades de um objeto, sendo referenciado por uma variável?
vou dar um exemplo pra ficar mais claro.
digamos que eu tenha alguns forms e que cada um contenha pelo menos uns 100 textbox. (Sim eu tenho uma aplicação assim)
e digamos que eu queira fazer um rotina para limpar esses 100 textbox, mas nao to com paciência pra fazer:
textbox1.clear
texbox2.clear etc etc etc
então eu decidir criar uma rotina chamada limpar que vai limpar esses textbox, essa rotina vai receber um array contando o nome desses textbox e com um loop eu faço algo parecido com item[i].clear (claro que nao dessa forma, foi somente para ilustrar)
outra utilidade para isso seria no caso onde vc define acesso a um usuário ativando ou desativando um item do menu, nesse caso no cadastro do usuário teriam todos os itens dos quais ele teria acesso e no momento do login eu executaria um loop onde eu habilitaria somente os itens cadastrados e os outros ficariam inativos.
Obrigado a todos pela atenção
Respostas
-
Passe o FORM ou o controle CONTAINER(Panel,groupbox,form) para uma sub,no qual recebe um tipo de classe
dependendo da situação pode ser um Object,depois teria que fazer um cast para trabalha-lo,
sem o cast,direto do form,mais ou menos assim:
LINQ:
Dim xVal = From _v In xControles.Controls Where TypeOf _v Is TextBox Select _v For Each _v As Control In xVal _v.Text = Nothing Next
Tradicional:
Public Sub Limpar(ByVal xControles As Form) 'procura controles no form que esta sendo recebido por parametro For Each xCon As Control In xControles.Controls 'verifica se o tipo do controle da vez é um textbox If (TypeOf xCon Is TextBox) Then 'limpar a propriedade text do controle xCon.Text = Nothing End If Next End Sub
chamando
Dim cls As New Class1 cls.Limpar(Me)
Microsoft Technology Associate (MTA)
- Sugerido como Resposta Herbert Lausmann quarta-feira, 20 de agosto de 2014 19:26
- Editado Eduardo xUni quarta-feira, 20 de agosto de 2014 19:44
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 21 de agosto de 2014 18:59
Todas as Respostas
-
Passe o FORM ou o controle CONTAINER(Panel,groupbox,form) para uma sub,no qual recebe um tipo de classe
dependendo da situação pode ser um Object,depois teria que fazer um cast para trabalha-lo,
sem o cast,direto do form,mais ou menos assim:
LINQ:
Dim xVal = From _v In xControles.Controls Where TypeOf _v Is TextBox Select _v For Each _v As Control In xVal _v.Text = Nothing Next
Tradicional:
Public Sub Limpar(ByVal xControles As Form) 'procura controles no form que esta sendo recebido por parametro For Each xCon As Control In xControles.Controls 'verifica se o tipo do controle da vez é um textbox If (TypeOf xCon Is TextBox) Then 'limpar a propriedade text do controle xCon.Text = Nothing End If Next End Sub
chamando
Dim cls As New Class1 cls.Limpar(Me)
Microsoft Technology Associate (MTA)
- Sugerido como Resposta Herbert Lausmann quarta-feira, 20 de agosto de 2014 19:26
- Editado Eduardo xUni quarta-feira, 20 de agosto de 2014 19:44
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 21 de agosto de 2014 18:59
-