Jak błąd przy naciśnięciu na kolumne w dataGridView?

0

W dataGridView w zdarzeniu CellClick mam pobieranie z wyświetlonej bazy do pól textbox, combobox, maskedTextBox i dateTimePicker danych z naciśniętego "zaznaczonego" wiersza ale po naciśnięciu kolumny u góry wyświetla mi się błąd "Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index". jak mogę się tego błędu pozbyć? mogę to jakoś zablokować czy dać to w try catch?

0

Sprawdzaj czy indeks zaznaczonego wiersza nie jest mniejszy od 0

0

jest poprawny. kod mam umieszczony w zdarzeniu CellClick i chyba nic z tym nie zrobię bo po naciśnięciu na nazwę kolumny nie mam zaznaczony wierszy i nie ma co pobrać więc wyskakuje błąd. dałem to w try catch z MessageBox "Nie można pobrać danych!". dzięki za zainteresowanie

0

Pokaż kod, bo coś mieszasz. Korzystanie w tym wypadku z wyjątków jest imho nie do końca poprawne, a szczególnie z wyjątku przekroczenia zakresu jakiegoś kontenera. Wyjątki służą do obsługi sytuacji wyjątkowych.

0
 
       private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                RowIndex = e.RowIndex;
                DataGridViewRow Row = dataGridView1.Rows[RowIndex];            
     
                textBox1.Text = Row.Cells[1].Value.ToString();
                textBox2.Text = Row.Cells[2].Value.ToString();
                textBox3.Text = Row.Cells[3].Value.ToString();
                dateTimePicker1.Value = Convert.ToDateTime(Row.Cells[4].Value.ToString());
                textBox5.Text = Row.Cells[5].Value.ToString();
                textBox6.Text = Row.Cells[6].Value.ToString();
                textBox7.Text = Row.Cells[7].Value.ToString();
                textBox9.Text = Row.Cells[9].Value.ToString();
                maskedTextBox1.Text = Row.Cells[8].Value.ToString();
                comboBox2.Text = Row.Cells[10].Value.ToString();
                comboBox3.Text = Row.Cells[11].Value.ToString();       
            }   
            catch (Exception)
            {
                MessageBox.Show("Nie można pobrać danych!");
            }
        }
1

Musisz sprawdzić czy RowIndex nie dostaniesz czasem mniejszy od zera, najlepiej sprawdź debuggerem jaki RowIndex dostaje e jeżeli klikniesz nie tam gdzie trzeba.

Za catch(Exception) powinni ucinać łapki. Łapanie wyjątków na pokemona "catch'em all!" to bardzo zły pomysł.

1 użytkowników online, w tym zalogowanych: 0, gości: 1