none
como inserir um dialogo ou mensagem para evitar erro ? RRS feed

  • Pergunta

  • tenho uma datagridview que tem 4 colunas, mas as vezes, por engano eu abro um arquivo de 5 colunas e da um erro e trava tudo.
    É lógico que o erro ocorre por que o arquivo tem 5 colunas e a datagridview suporta apenas 4.
    Como faço pra coloca só um aviso e cancelar a operação automaticamente ?
    Ou qualquer outra solução para que o programa não trave...
    quarta-feira, 9 de dezembro de 2009 01:28

Todas as Respostas

  • Use o Try... Catch
    Felippe Domingos
    quarta-feira, 9 de dezembro de 2009 13:36
  • Eu tja tentei, mas da erro igual.
    Aqui está o original
    private void butAbrir_Click(object sender, EventArgs e)
            {
                DataSet dst = new DataSet();
                openFileDialog1.Filter = "XML|*.xml|Excel|*.xls";
                           
                    if (openFileDialog1.ShowDialog() == DialogResult.OK)
                    {
                        dst.ReadXml(openFileDialog1.FileName);
                        dataGridView11.DataSource = dst;
                        dataGridView11.DataMember = dst.Tables[0].ToString();


                    }

                    else
                    {
                        return;
                    }
                }
               

                    jogadores = new List<Jogador>();
                    foreach (DataRow row in dst.Tables[0].Rows)
                    {
                        jogadores.Add(new Jogador { POS = Convert.ToInt32(row[0]), Nome = row[1].ToString(), Gols = Convert.ToInt32(row[2]), Topo = Convert.ToInt32(row[3]) });
                        dataGridView11.Columns[0].Width = 100;
                        dataGridView11.Columns["POS"].Width = 35;
                        dataGridView11.Columns["POS"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        dataGridView11.Columns["POS"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        dataGridView11.Columns["Nome"].Width = 91;
                        dataGridView11.Columns["Nome"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        dataGridView11.Columns["Nome"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        dataGridView11.Columns["Gols"].Width = 35;
                        dataGridView11.Columns["Gols"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        dataGridView11.Columns["Gols"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        dataGridView11.Columns["Topo"].Width = 35;
                        dataGridView11.Columns["Topo"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        dataGridView11.Columns["Topo"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                    }
    quarta-feira, 9 de dezembro de 2009 18:35
  • Olha Fabrício, se tu usar o try catch de maneira correta, não deve dar erro. Qr dizer, dá erro igual, mas tu trata e daí não pendura. Outra forma de fazer é colocar um if perguntando se o arquivo tem 5 colunas ou 4. Só entra no if se tiver 4.

    Troca
                        dataGridView11.DataSource = dst;
                        dataGridView11.DataMember = dst.Tables[0].ToString();
    Por
                  if (dts.Tables[0].coluns.count == 4)
                  {  
                        dataGridView11.DataSource = dst;
                        dataGridView11.DataMember = dst.Tables[0].ToString();
                   }


    sexta-feira, 11 de dezembro de 2009 14:59