Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

McJota

Simplificar código

Recommended Posts

Boa noite pessoal.

Como faço para simplificar o seguinte código?

If Imagem.Text = "1" Then
Panel1.BackgroundImage = Drawing.Image.FromFile(Application.StartupPath & "\Imagens\Imagem.jpg")
ElseIf Imagem.Text = "2" Then
Panel2.BackgroundImage = Drawing.Image.FromFile(Application.StartupPath & "\Imagens\Imagem.jpg")
ElseIf Imagem.Text = "3" Then
Panel3.BackgroundImage = Drawing.Image.FromFile(Application.StartupPath & "\Imagens\Imagem.jpg")
End If

No meu Form tenho 100 Panels divididos em 10 TabPages, entao teria que repetir a mesma linha de código 100 vezes!

Tentei definir uma variável más não consegui!

Dim T as String
T = Imagem.Text
Panel(T).BackgroundImage = Drawing.Image.FromFile(Application.StartupPath & "\Imagens\Imagem.jpg")

 

Desde já agradeço....

Compartilhar este post


Link para o post
Compartilhar em outros sites

use um for, com um array.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use um for each

 For Each p As Panel In seutabcontrol.Controls
            If TypeOf p Is Panel Then
                p.BackgroundImage = Drawing.Image.FromFile(Application.StartupPath & "\Imagens\Imagem.jpg")
            End If
        Next

Caso ocorra erros de conversão tente assim:

For Each p As Panel In seutabcontrol.Controls
            If TypeOf p Is Panel Then
                DirectCast(p, Panel).BackgroundImage = Drawing.Image.FromFile(Application.StartupPath & "\Imagens\Imagem.jpg")
            End If
        Next

Ou

   For Each p As Panel In seutabcontrol.Controls
            If TypeOf p Is Panel Then
                CType(p, Panel).BackgroundImage = Drawing.Image.FromFile(Application.StartupPath & "\Imagens\Imagem.jpg")
            End If
        Next

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Boas Doctor, obrigado pela atenção.
Com o código que me passou define o BackgroundImage de todos os Panels!
Na verdade o que eu precisava era definir somente o do Panel indicado pela TextBox Imagem.

If Imagem.Text = "1" Then
Panel1.BackgroundImage = Drawing.Image.FromFile(Application.StartupPath & "\Imagens\Imagem.jpg")
ElseIf Imagem.Text = "2" Then
Panel2.BackgroundImage = Drawing.Image.FromFile(Application.StartupPath & "\Imagens\Imagem.jpg")
ElseIf Imagem.Text = "3" Then
Panel3.BackgroundImage = Drawing.Image.FromFile(Application.StartupPath & "\Imagens\Imagem.jpg")
End If

 

Abraço.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Doctor, mais uma vez obrigado pela atenção.....

Consegui resolver parcialmente meu problema usando um For Each.

For Each T In Me.TabPage1.Controls
If T.Name = "Panel" & Imagem.Text Then
T.BackGoundImage = Drawing.Image.FromFile(Application.StartupPath & "\Imagens\Imagem.jpg")
End If
Next

Usei o mesmo código para cada TabPage do Form e ficou perfeito!

Obrigado a todos pelas dicas....
Abraço....

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.