none
A referência de objecto não foi definida como uma instância de um objecto.' System.Windows.Forms.ListControl.SelectedValue.get returned null. RRS feed

  • 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?

    quarta-feira, 19 de setembro de 2018 15:07

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!

    quarta-feira, 19 de setembro de 2018 16:42