28

私の C# アプリケーションには datagridview があり、ユーザーは行全体をクリックすることしかできません。そこで、SelectionMode を FullRowSelect に設定しました。

しかし今、ユーザーが行をダブルクリックしたときに発生するイベントが必要です。メッセージボックスに行番号を入れたいです。

私は次のことを試しました:

 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());
 }

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

4

7 に答える 7

26

CellContentDoubleClick イベントは、セルのコンテンツをダブルクリックしたときにのみ発生します。私はこれを使用して動作します:

    private void dgvUserList_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
    {
        MessageBox.Show(e.RowIndex.ToString());
    }
于 2013-04-12T12:19:15.553 に答える
6

Visual Studioで.designerファイルを手動で編集しないでください。これは、通常、頭痛の種になります。代わりに、DataGrid要素内に含まれている必要があるDataGridRowのプロパティセクションで指定してください。または、VSにそれを実行させたい場合は、プロパティページ->イベント(小さな稲妻アイコン)内でダブルクリックイベントを見つけ、そのイベントの関数名を入力するテキスト領域をダブルクリックします。

このリンクは役立つはずです

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

于 2012-12-04T15:31:17.953 に答える
5

例として、northwind データベースの employees テーブルを使用して、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 番目のテーブル列の内容が表示されます。

ここに画像の説明を入力

于 2015-12-03T17:04:27.650 に答える
4

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

 private void dgvReport_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
 {

   //do something


 }
于 2012-12-04T15:28:48.667 に答える
0

これは次の方法で実行できます:CellDoubleClickイベント これはコードです。

private void datagridview1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
    {
        MessageBox.Show(e.RowIndex.ToString());
    }
于 2018-05-31T11:48:25.120 に答える