SELECIONAR OS RADIOBUTTONS APENAS DENTRO DA REGRA

JULIAAA 17/10/2013 09:55:22
#430105
Como posso permitir que o usuário selecione apenas os radio buttons de acordo com as regras de cada brinquedo?

estou tentando fazer desta maneira, mas esta dando erro:
id = Double.Parse(Cmb_idade.Text)
If (id >= 7 And id <= 12) Then
Rdb_minhocao.Enabled = True
Rdb_carrossel.Enabled = True
Rdb_roda.Enabled = True
Rdb_russa.Enabled = False
Rdb_carrossel.Checked = False
Rdb_minhocao.Checked = False
Rdb_roda.Checked = False
Rdb_russa.Checked = False

ElseIf (id = 6) Then
Rdb_minhocao.Enabled = True
Rdb_carrossel.Enabled = True
Rdb_roda.Enabled = False
Rdb_russa.Enabled = False
Rdb_carrossel.Checked = False
Rdb_minhocao.Checked = False
Rdb_roda.Checked = False
Rdb_russa.Checked = False

ElseIf (id > 12) Then
Rdb_minhocao.Enabled = False
Rdb_carrossel.Enabled = False
Rdb_roda.Enabled = True
Rdb_russa.Enabled = True
Rdb_carrossel.Checked = False
Rdb_minhocao.Checked = False
Rdb_roda.Checked = False
Rdb_russa.Checked = False

ElseIf (id < 6 And id = 0) Then
Rdb_minhocao.Enabled = False
Rdb_carrossel.Enabled = False
Rdb_roda.Enabled = False
Rdb_russa.Enabled = False
Rdb_carrossel.Checked = False
Rdb_minhocao.Checked = False
Rdb_roda.Checked = False
Rdb_russa.Checked = False
End If
JNSOFT 18/07/2017 16:24:51
#475271
Alguem tem esse fonte em vb.net?
KERPLUNK 18/07/2017 17:00:35
#475272
Da maneira como deve ser:

namespace SEU_NAMESPACE_AQUI
{
public class Brinquedo
{
public string Nome { get; set; }
public int IdadeMin { get; set; }
public int IdadeMax { get; set; }
public double AlturaMin { get; set; }
public double AlturaMax { get; set; }
public int Capacidade { get; set; }
public List<Crianca> Criancas { get; set; }
public void AddCrianca(Crianca crianca)
{
if (crianca.Idade < this.IdadeMin | crianca.Idade > this.IdadeMax)
throw new IdadeException([Ô]A idade da criança não condiz com os critérios do brinquedo[Ô]);

if (crianca.Altura < this.AlturaMin | crianca.Altura > this.AlturaMax)
throw new AlturaException([Ô]A altura da criança não condiz com os critérios do brinquedo[Ô]);

if (Criancas.Count + 1 > this.Capacidade)
throw new CapacidadeException([Ô]A capacidade do brinquedo está esgotada[Ô]);

}

[Serializable]
public class CapacidadeException : Exception
{
public CapacidadeException() { }
public CapacidadeException(string message) : base(message) { }
public CapacidadeException(string message, Exception inner) : base(message, inner) { }
protected CapacidadeException(
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context) : base(info, context) { }
}
[Serializable]
public class AlturaException : Exception
{
public AlturaException() { }
public AlturaException(string message) : base(message) { }
public AlturaException(string message, Exception inner) : base(message, inner) { }
protected AlturaException(
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context) : base(info, context) { }
}
[Serializable]
public class IdadeException : Exception
{
public IdadeException() { }
public IdadeException(string message) : base(message) { }
public IdadeException(string message, Exception inner) : base(message, inner) { }
protected IdadeException(
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context) : base(info, context) { }
}
}

public class Crianca
{
public string Nome { get; set; }
public int Idade { get; set; }
public double Altura { get; set; }
}
}


Para usar:

//essa variável pode ser global no form se quiser
List<Brinquedo> brinquedos = new List<Brinquedo>();
brinquedos.Add(new Brinquedo()
{
Nome = [Ô]Minhocão[Ô],
AlturaMax = 1.5,
AlturaMin = 1,
IdadeMax = 6,
IdadeMin = 12,
Capacidade = 12
});
brinquedos.Add(new Brinquedo()
{
Nome = [Ô]Roda gigante[Ô],
AlturaMax = 999,
AlturaMin = 1.3,
IdadeMax = 999,
IdadeMin = 6,
Capacidade = 26
});
try
{
//adicionando a criança
brinquedos.FirstOrDefault(x => x.Nome == [Ô]Minhocão[Ô]).AddCrianca(new Crianca()
{
Nome = [Ô]Joãozinho[Ô],
Idade = 13,
Altura = 1.3
});

}
catch (AlturaException ex)
{
MessageBox.Show(ex.Message);
}
catch(IdadeException ex)
{
MessageBox.Show(ex.Message);
}
catch(CapacidadeException ex)
{
MessageBox.Show(ex.Message);
}


FFCOUTO 18/07/2017 17:10:59
#475273
Julia,

Primeiramente, você não precisa repetir as linhas para desmarcar os RadioButtons. Basta você colocar fora dos If Then.

Rdb_carrossel.Checked = False
Rdb_minhocao.Checked = False
Rdb_roda.Checked = False
Rdb_russa.Checked = False


De acordo com as regras que você postou, observe que o resultado sempre será do tipo Boolean (True ou False). Então você pode tranquilamente eliminar todos esses IF[ô]s. Assim você facilita a leitura do código e ao mesmo tempo, mantém a clareza.
Vamos lá.

Dim idade As Double = Convert.ToDouble(Cmb_idade.Text)
Dim altura As Double = Convert.DoDouble(Txt_Altura.Text)


Com as variáveis acima, vamos definir as permissões

Dim minhocaoLiberado As Boolean = (idade >= 6) And (idade <= 12) And (altura >= 1) And (altura <= 1.5)
Dim rodagiganteLiberado As Boolean = (idade > 6) And (altura >= 1.3)
Dim carrosslLiberado As Boolean = (idade >= 6) And (idade <= 12) And (altura >= 1) And (altura <= 1.5)
Dim montanharussaLiberado As Boolean = (idade > 12) And (altura > 1.5)


Agora vamos aplicar aos controles.

Rdb_minhocao.Enabled = minhocaoLiberado
Rdb_carrossel.Enabled = carrosslLiberado
Rdb_roda.Enabled = rodagiganteLiberado
Rdb_russa.Enabled = montanharussaLiberado


Espero ter ajudado.
Faça seu login para responder