web-dev-qa-db-ja.com

c#datagridview FullRowSelectで行をダブルクリック

C#アプリケーションに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());
 }

残念ながら何も起こりません。私は何を間違えていますか?

23
Metalhead89

通常、頭痛の種になるVisual Studioで.designerファイルを手動で編集しないでください。代わりに、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());
    }
20
cihata87

これは機能します。コントロールイベントがこのコードに割り当てられていることを確認してください。おそらく失われています。また、ダブルクリックはセルが空でない場合にのみ機能することにも気付きました。コンテンツを含むセルをダブルクリックしてみてください、デザイナーを混乱させないでください

 private void dgvReport_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
 {

   //do something


 }
4
CR41G14

Northwindデータベースの従業員テーブルを例として使用して、datagridviewの行のインデックス番号を取得します。

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の2番目のテーブル列の内容が表示されます。

enter image description here

2
Ashraf Abusada

これを探していると思います:RowHeaderMouseDoubleClickイベント

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

行インデックスを取得するには:

int indice = e.RowIndex

0
Said El Bakkali

CellDoubleClickイベントこれはコードです。

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

目的のために、行ヘッダーがダブルクリックされたときにデフォルトのイベントがあります。次のコードを確認してください。

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