Подтвердить что ты не робот

С# datagridview doubleclick в строке с FullRowSelect

У меня есть datagridview в моем приложении С#, и пользователь должен только иметь возможность нажимать на полные строки. Поэтому я установил SelectionMode в FullRowSelect.

Но теперь я хочу иметь событие, которое запускается, когда пользователь дважды щелкает по строке. Я хочу иметь номер строки в MessageBox.

Я попробовал следующее:

 this.roomDataGridView.CellContentDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.roomDataGridView_CellCont‌ ​entDoubleClick); 

 private void roomDataGridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
 {
      MessageBox.Show(e.RowIndex.ToString());
 }

В любом случае ничего не происходит. Что я делаю неправильно?

4b9b3361

Ответ 1

Не вручную редактировать файлы .designer в visual studio, что обычно приводит к головным болям. Вместо этого укажите его в разделе свойств вашего DataGridRow, который должен содержаться в элементе DataGrid. Или, если вы просто хотите, чтобы VS сделал это, вы обнаружите событие двойного щелчка на странице свойств → события (маленький значок молнии) и дважды щелкните текстовую область, где вы должны ввести имя функции для этого события.

Эта ссылка должна помочь

http://msdn.microsoft.com/en-us/library/6w2tb12s(v=vs.90).aspx

Ответ 2

В событии CellContentDoubleClick срабатывает только при двойном нажатии на содержимое ячейки. Я использовал это и работал:

    private void dgvUserList_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
    {
        MessageBox.Show(e.RowIndex.ToString());
    }

Ответ 3

Это будет работать, убедитесь, что ваш элемент управления назначен этому коду, он, вероятно, был утерян, я также заметил, что двойной щелчок будет работать, только если ячейка не пуста. Попробуйте дважды щелкнуть по ячейке с контентом, не путайте с дизайнером

 private void dgvReport_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
 {

   //do something


 }

Ответ 4

В качестве примера вы получите индексный номер строки в datagridview с использованием таблиц служащих базы данных Northwind:

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'nORTHWNDDataSet.Employees' table. You can move, or remove it, as needed.
            this.employeesTableAdapter.Fill(this.nORTHWNDDataSet.Employees);

        }

        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            var dataIndexNo = dataGridView1.Rows[e.RowIndex].Index.ToString();
            string cellValue = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();

            MessageBox.Show("The row index = " + dataIndexNo.ToString() + " and the row data in second column is: "
                + cellValue.ToString());
        }
    }
}

результат покажет вам номер индекса записи и содержимое второго столбца таблицы в datagridview:

введите описание изображения здесь

Ответ 5

Вы можете сделать это с помощью: CellDoubleClick Event это код.

private void datagridview1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
    {
        MessageBox.Show(e.RowIndex.ToString());
    }

Ответ 6

Для вашей цели по умолчанию происходит двойное нажатие на заголовок строки. Проверьте следующий код,

 private void dgvCustom_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
 {
      //Your code goes here
 }

Ответ 7

Я думаю, что вы ищете это: событие RowHeaderMouseDoubleClick

private void DgwModificar_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) {
...
}

чтобы получить индекс строки:

int indice = e.RowIndex