ALTERAR PROPRIEDADES DE UM USERCONTROL

KERPLUNK 16/05/2016 20:44:32
#462159
Você pode também criar listas de controle por tipo e ainda aplicar expressões lambda à essas listas para encontrar controles específicos. Exemplo:

Dim botoes As List(Of Button) = Me.Controls.OfType(Of Button)() [ô]Cria uma lista chamada [Ô]botoes[Ô] que contém todos os controles do tipo [Ô]Button[Ô] do form.
Dim botoes As List(Of Label) = Me.Controls.OfType(Of Label)() [ô]O mesmo que acima, mas buscando controles do tipo Label


Para buscar controles específicos, você pode buscar qualquer propriedade de qualquer controle dentro dessas listas:

Dim botao As Button = botoes.FirstOrDefault(Function(b) b.Name = [Ô]button1[Ô]) [ô]Buscando um botão dentro da lista [Ô]botoes[Ô] onde o nome seja [Ô]button1[Ô]

Assim como buscar por [Ô]Name[Ô], você pode buscar por qualquer propriedade de controles dentro da lista, como Tag ou Text ou até cor, enfim, qualquer propriedade de um tipo [Ô]Button[Ô]
THRON 17/05/2016 16:37:07
#462185


Todas as labels desses usercontrols estao como label1, o codigo do JABA até funcionou, porém mudava o primeiro user control apenas pois todos os users estão com as labels chamadas de Label1.


  Dim label As Label = LocalizarControle([Ô]Label1[Ô], Form1.FlowLayoutPanel1) [ô]Coloque aqui o Container Principal
label.Text = [Ô]Seu texto[Ô]

Dim botao As Button = LocalizarControle([Ô]Button1[Ô], Form1.FlowLayoutPanel1)
botao.Text = [Ô]Seu Texto[Ô]

Public Function LocalizarControle(Nome As String, controle As Control) As Control
If controle.Controls.Count > 0 Then
For Each c As Control In controle.Controls
If c.Controls.Count = 0 Then
If c.Name = Nome Then Return c
Else
Return LocalizarControle(Nome, c)
End If
Next
End If
Return Nothing
End Function


então tentei fazer o seguinte, no codigo onde eu crio os Users mudar as propriedades name das labels:

  For I = 0 To 5
user = New UserControl1
user.Name = [Ô]UserC[Ô] + I.ToString()

user.Label1.Text = [Ô]UserControl 0[Ô] + I.ToString()
user.Button1.Text = [Ô]Comando[Ô]

user.Label1.Name = [Ô]label[Ô] + I.ToString
user.Button1.Name = [Ô]button[Ô] + I.ToString

FlowLayoutPanel1.Controls.Add(user)

Next


Criei um variavel global que receberá o [Ô]id[Ô] do botão que eu cliquei, e no botão do user;




  Form1.Id_SELECT_LABEL = Label1.Name
Form1.ID_SELECT_BUTTON = Button1.Name


Alterei o codigo do JABA para;

  Dim label As Label = LocalizarControle(Id_SELECT_LABEL, Form1.FlowLayoutPanel1) [ô]Coloque aqui o Container Principal
label.Text = [Ô]Seu texto[Ô]

Dim botao As Button = LocalizarControle(ID_SELECT_BUTTON, Form1.FlowLayoutPanel1)
botao.Text = [Ô]Seu Texto[Ô]


Só que apareceu o seguinte erro;

na linha

label.Text = [Ô]Seu Texto[Ô]

Citação:

Referência de objeto não definida para uma instância de um objeto.




Digamos que eu queria mudar as propriedades apenas do user que eu clicar no botão.
JABA 17/05/2016 17:04:37
#462187
E por que você não usou o último código que postei?
THRON 17/05/2016 17:22:10
#462192
hahaha desculpa, não tinha visto, começou uma nova pagina e eu não tinha percebido, valeuuuu, funcionou!!!
Página 2 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas