C# dataGridView\u CellClick事件

C# dataGridView\u CellClick事件,c#,winforms,datagridview,C#,Winforms,Datagridview,因此,我正在开发这个windows窗体应用程序,让用户从DataGridView8中进行选择。DataGridView8有一个ButtonColumn,因此当您单击按钮时,按钮中的标题信息将出现在另一个DataGridView9上。它链接到SQL Server,并且已经有一个完整的数据库。我只是被困在如何使ButtonColumn工作上,就像我单击它一样,另一个项目出现在DataGridView9上 这是用于dataGridView8\u单元单击的事件 private void

因此,我正在开发这个windows窗体应用程序,让用户从DataGridView8中进行选择。DataGridView8有一个ButtonColumn,因此当您单击按钮时,按钮中的标题信息将出现在另一个DataGridView9上。它链接到SQL Server,并且已经有一个完整的数据库。我只是被困在如何使ButtonColumn工作上,就像我单击它一样,另一个项目出现在DataGridView9

这是用于
dataGridView8\u单元单击的事件

        private void Form2_Load(object sender, EventArgs e)
        {
        DataGridViewButtonColumn buttonColumn = new DataGridViewButtonColumn();
        buttonColumn.Text = "id_fil";
        buttonColumn.Name = "id_fil1";
        buttonColumn.DataPropertyName = "id_fil";
        dataGridView8.Columns.Add(

        dataGridView8.Columns.Add("id", "id_fil");
        dataGridView8.Columns.Add("nom", "nom_fil");
        }


   private void dataGridView8_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        var senderGrid = (DataGridView)sender;

        if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn &&
            e.RowIndex >= 0)
        {
            cnx.Open();
            cmd = new SqlCommand("select nom_module from module where id_module ='" + e.ColumnIndex +"'", cnx);
            dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                dataGridView9.Rows.Add(dr[2]);
            }
            dr.Close();
            cnx.Close();
        }
    }

虽然不太详细,但它似乎工作正常,并显示了我从数据库中需要的项目,但ButtonColumn是我不知道如何处理的…

您可以通过以下方式查看是否单击了按钮栏:

if(e.SelectedColumn == (your column index from 0))
或该行:

e.SelectedRow
如果datagridview9绑定到数据集,则不能更改其值(行)。在这种情况下,必须解除绑定并更改其值,否则最好编写整个c代码来填充datagridview