Usuário com melhor resposta
A referência de objecto não foi definida como uma instância de um objecto.' System.Windows.Forms.ListControl.SelectedValue.get returned null.

Pergunta
-
Boas pessoal, neste trecho de código estou a ter este problema.
A referência de objecto não foi definida como uma instância de um objecto.'
private void cmbopcaohoraria_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbotarifa.SelectedValue.ToString() == "4")(APARECE O ERRO ACIMA INDICADO)
{
txtSimples.Enabled = true;
txtpreçoSimples.Enabled = true;
}
else
{
txtSimples.Enabled = false;
txtpreçoSimples.Enabled = false;
txtSimples.Clear();
txtpreçoSimples.Clear();
txt_precoPot.Clear();
}
if (cmbotarifa.SelectedValue.ToString() == "5")(SE COMENTAR ONDE APARECE O ERRO, ELE VAI APARECER NESTA LINHA, E O MESMO SE SUCEDE NO PRÒXIMO IF)
{
txtForaVazio.Enabled = true;
txtVazio.Enabled = true;
txtpreçoForaVazio.Enabled = true;
txtpreçoVazio.Enabled = true;
}
else
{
txtForaVazio.Enabled = false;
txtVazio.Enabled = false;
txtpreçoForaVazio.Enabled = false;
txtpreçoVazio.Enabled = false;
txtForaVazio.Clear();
txtVazio.Clear();
txtpreçoForaVazio.Clear();
txtpreçoVazio.Clear();
txt_precoPot.Clear();
}
if (cmbotarifa.SelectedValue.ToString() == "8")
{
txtVazio.Enabled = true;
txtpreçoVazio.Enabled = true;
txtPonta.Enabled = true;
txtpreçoPonta.Enabled = true;
TxtCheia.Enabled = true;
txtpreçoCheia.Enabled = true;
}
else
{
txtPonta.Enabled = false;
txtpreçoPonta.Enabled = false;
TxtCheia.Enabled = false;
txtpreçoCheia.Enabled = false;
txtPonta.Clear();
txtpreçoPonta.Clear();
TxtCheia.Clear();
txtpreçoCheia.Clear();
txt_precoPot.Clear();
}
}Alguém me pode ajudar a resolver este erro?
Respostas
-
Olá, Diogo!
Este erro deve estar ocorrendo porque cmbotarifa.SelectedValue é null, e você ainda está tentando converter null para string. Se esta combo pode vir com valor null, você deve antes verificar isto, e continuar somente se o valor for diferente de null:
private void cmbopcaohoraria_SelectedIndexChanged(object sender, EventArgs e) { if(cmbotarifa.SelectedValue != null) // ou if(cmbotarifa.SelectedIndex >= 0) { if (cmbotarifa.SelectedValue.ToString() == "4")(APARECE O ERRO ACIMA INDICADO) { txtSimples.Enabled = true; txtpreçoSimples.Enabled = true; } else { txtSimples.Enabled = false; txtpreçoSimples.Enabled = false; txtSimples.Clear(); txtpreçoSimples.Clear(); txt_precoPot.Clear(); } if (cmbotarifa.SelectedValue.ToString() == "5")(SE COMENTAR ONDE APARECE O ERRO, ELE VAI APARECER NESTA LINHA, E O MESMO SE SUCEDE NO PRÒXIMO IF) { txtForaVazio.Enabled = true; txtVazio.Enabled = true; txtpreçoForaVazio.Enabled = true; txtpreçoVazio.Enabled = true; } else { txtForaVazio.Enabled = false; txtVazio.Enabled = false; txtpreçoForaVazio.Enabled = false; txtpreçoVazio.Enabled = false; txtForaVazio.Clear(); txtVazio.Clear(); txtpreçoForaVazio.Clear(); txtpreçoVazio.Clear(); txt_precoPot.Clear(); } if (cmbotarifa.SelectedValue.ToString() == "8") { txtVazio.Enabled = true; txtpreçoVazio.Enabled = true; txtPonta.Enabled = true; txtpreçoPonta.Enabled = true; TxtCheia.Enabled = true; txtpreçoCheia.Enabled = true; } else { txtPonta.Enabled = false; txtpreçoPonta.Enabled = false; TxtCheia.Enabled = false; txtpreçoCheia.Enabled = false; txtPonta.Clear(); txtpreçoPonta.Clear(); TxtCheia.Clear(); txtpreçoCheia.Clear(); txt_precoPot.Clear(); } } }
Mais uma questão: este código está dentro do evento correto? Veja que o evento é da combo cmbopcaohoraria. só uma observação mesmo. Se é assim mesmo, ok.
Espero que ajude. Bom trabalho!
- Marcado como Resposta Filipe B CastroModerator terça-feira, 16 de outubro de 2018 18:57