Jump to content
thoga31

RadioButtons não checkam

Recommended Posts

thoga31

Boas, pessoal.

Pesquisei sobre o assunto e criei um código de teste que analisa o BackgroundImage (imagem de fundo) de uma Form, e, conforme a imagem, uma série de 7 RadioButtons mudam o seu estado de Checked. Se a imagem de fundo é a imagem Plasma do espaço My.Resources, então checka o RadioButton Plasma, por exemplo. Contudo, ele só está a checkar quando não há imagem de fundo.

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Form1.BackgroundImage Is Nothing Then
            SemImagem.Checked = True
        End If
        If Form1.BackgroundImage Is My.Resources.Plasma Then
            Plasma.Checked = True
        End If
        If Form1.BackgroundImage Is My.Resources.Ocean_Hope_1280x800 Then
            Oceano.Checked = True
        End If
        If Form1.BackgroundImage Is My.Resources.wp_Earth_in_Background_1280x800 Then
            Espaco.Checked = True
        End If
        If Form1.BackgroundImage Is My.Resources.wp_Sharks_1280x800 Then
            Tubaroes.Checked = True
        End If
        If Form1.BackgroundImage Is My.Resources.new_york_city__wallpaper__1280_x_800 Then
            Cidade.Checked = True
        End If
        If Form1.BackgroundImage Is My.Resources.beautiful_island_beach_wallpaper_1280x800 Then
            Ilha.Checked = True
        End If
    End Sub

O mesmo acontece se eu fizer outro método:

If Form1.BackgroundImage.Equals(My.Resources.Plasma) Then
     Plasma.Checked = True  'RadioButton "Plasma"
End If

Não entendo se estou a fazer algo de mal. :dontgetit: O código nunca dá erros, excepto quer não checka os RadioButtons quando a imagem de fundo não é Nothing.

Cumpz.


Knowledge is free!

Share this post


Link to post
Share on other sites
Caça

Isso está a acontecer porque são imagens. Para dar a volta terás que as comparar em memoria(o que levaria mais tempo), por isso deves arranjar outra maneira para fazer a verificação.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
thoga31

O problema e que os meus conhecimentos resumem-se a isto: Is e Equals.

Como se compara em memória? Tens alguma sugestão ou trecho de código-exemplo para eu poder interpretar e adaptar ao meu caso? :)


Knowledge is free!

Share this post


Link to post
Share on other sites
thoga31

Bem, arranjei uma solução, que não é tão "robusta" como a que eu tinha pensado, e que se baseia numa variável global de controlo da imagem, que não é mais do que uma string com o nome da imagem corrente, em maiúsculas. Por exemplo,

If Form1.ReferenciaImagem = "PLASMA" Then
     Plasma.Checked = True
End If

Mas confesso que adoraria saber "contornar" esta solução, trabalhando mais directamente com as imagens.

Cumpz. :)


Knowledge is free!

Share this post


Link to post
Share on other sites
bioshock

Já noutro tópico semelhante o disse: deves utilizar a propriedade tag das imagens.

Btw, esses teus IF's devem ser encadeados e não "soltos".

Wrong way:

If Form1.BackgroundImage Is Nothing Then
            SemImagem.Checked = True
        End If
        If Form1.BackgroundImage Is My.Resources.Plasma Then
            Plasma.Checked = True
        End If

Right way:

If Form1.BackgroundImage Is Nothing Then
            SemImagem.Checked = True
        ElseIf Form1.BackgroundImage Is My.Resources.Plasma Then
            Plasma.Checked = True
        ' (..) ++
        End If

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.