Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
KennyPanders
2 / 2 / 5
Регистрация: 21.11.2015
Сообщений: 75
#1

Событие CellMouseDown в dataGridView. Exception - C#

18.02.2016, 11:06. Просмотров 249. Ответов 4
Метки нет (Все метки)

есть dataGridView, на нем есть событие CellMouseDown, для того, чтобы при правом клике по строке выпадало контекстное меню этой строки. И это исправно работает.

Вот его код
C#
1
2
3
4
5
private void dataGridView1_CellMouseDown (object sender, DataGridViewCellMouseDown e)
{
      if (e.ColumnIndex < dataGridView1.ColumnCount && e.RowIndex < dataGridView1.RowCount)
              dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
}
Однако, при клике по заголовку столбца или при попытке пользователя изменить его ширину вылетает Exception у этого события.

Как дописать исключение для этого события? Или как мне деактивировать столбцы (просто отключение сортировки не помогло), чтобы были просто надписи по сути?
0
Миниатюры
Событие CellMouseDown в dataGridView. Exception  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2016, 11:06
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Событие CellMouseDown в dataGridView. Exception (C#):

Не отрабатывает событие в DataGridView
Добрый день! По непонятным пока причинам игнорируется событие у DataGridView,...

DataGridView и событие DataError
Всем доброго времени суток! Как узнать в DataGridView в событии DataError в...

Событие для comboBox в datagridview
Все Доброго времени суток! Написал событие для combobox в dgv только как...

При экспорте данных из dataGridView в файл выдается System.OutOfMemory.Exception
Есть dataGridView с данными окло 1 млн строк, нужно сохранить данные в файл. ...

Событие на заполнение выпадающего списка DataGridView
Есть два dataGridView. Cоздаю список из значения ячеек одного грида и нужно...

Как работает событие RowEnter у DataGridView ?
DatagridView RowEnter обрабатываю это событие. Все бы хорошо, но почему это...

4
Даценд
Модератор
Эксперт .NET
4045 / 3885 / 2573
Регистрация: 20.04.2015
Сообщений: 7,060
18.02.2016, 11:38 #2
C#
1
2
3
4
5
private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
    if (e.ColumnIndex < dataGridView1.ColumnCount && e.ColumnIndex>=0 && e.RowIndex < dataGridView1.RowCount && e.RowIndex >=0)
        dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
}
1
KennyPanders
2 / 2 / 5
Регистрация: 21.11.2015
Сообщений: 75
18.02.2016, 12:29  [ТС] #3
Спасибо огромное, сработало, но не до конца.

Теперь, при нажатии на заголовок столбца Exception вылетает у другого события - CurrentCellChange.
Видимо, по подобной причине.

Ниже привожу код этого события:
C#
1
2
3
4
5
6
7
8
9
10
11
private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
        {
            //Заполнение информации из DGV в лэйблы
            if (dataGridView1.CurrentRow.Cells[5].Value.ToString() == "")   //Тут EXCEPTION при нажатии на заголовок столбца dgv
                label1.Text = "Нет данных";
            else
                label1.Text = dataGridView1.CurrentRow.Cells[5].Value.ToString();
 
            label2.Text = dataGridView1.CurrentRow.Cells[7].Value.ToString();
            textBox1.Text = dataGridView1.CurrentRow.Cells[6].Value.ToString();
}
0
Даценд
Модератор
Эксперт .NET
4045 / 3885 / 2573
Регистрация: 20.04.2015
Сообщений: 7,060
18.02.2016, 12:52 #4
Лучший ответ Сообщение было отмечено KennyPanders как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
{
    if (dataGridView1.CurrentRow != null)
    {
        if (dataGridView1.CurrentRow.Cells[5].Value.ToString() == "")   
            label1.Text = "Нет данных";
        else
            label1.Text = dataGridView1.CurrentRow.Cells[5].Value.ToString();
 
        label2.Text = dataGridView1.CurrentRow.Cells[7].Value.ToString();
        textBox1.Text = dataGridView1.CurrentRow.Cells[6].Value.ToString();
    }
}
1
KennyPanders
2 / 2 / 5
Регистрация: 21.11.2015
Сообщений: 75
18.02.2016, 13:14  [ТС] #5
Бесконечно благодарен! Всего вам хорошего!
0
18.02.2016, 13:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2016, 13:14
Привет! Вот еще темы с решениями:

Событие CellValueChanged в DataGridView не вызывается программно
Здравствуйте! Есть таблицы DataTable dt1, dt2; DataGridView dgv1, dgv2;...

Событие для dataGridView и ячейки типа DataGridViewComboBoxCell
Добрый день! Есть dataGridView с двумя ячейками: DataGridViewComboBoxCell и...

Событие после изменения данных привязанных к DataGridView
С помощью DataGridView я отображаю записи, однако информация о них одновременно...

ComboBox ячейка в DataGridView как отловить событие?
Добрый день! Имеем dataGridView в нем есть столбец ячейкам которого присвоен...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru