it-roy-ru.com

c # datagridview двойной щелчок по строке с FullRowSelect

В моем приложении на C # есть сетевое представление, и пользователь должен иметь возможность щелкать только по полным строкам. Поэтому я установил для 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());
 }

К сожалению, ничего не происходит. Что я делаю неправильно?

21
Metalhead89

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

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

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

6
Pseudonym

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

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

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

 private void dgvReport_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
 {

   //do something


 }
4
CR41G14

Вы получите порядковый номер строки в представлении данных, используя в качестве примера таблицы сотрудников базы данных 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:

 enter image description here

2
Ashraf Abusada

вы можете сделать это следующим образом: CellDoubleClick Event Это код. 

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

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

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