С# 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());
}
В любом случае ничего не происходит. Что я делаю неправильно?
Ответы
Ответ 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