首页 > 解决方案 > dataGridView_CellClick 事件

问题描述

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

这是为dataGridView8_CellClick

        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 是我不知道如何处理的......

标签: c#winformsdatagridview

解决方案


您可以检查是否单击了按钮的列:

if(e.SelectedColumn == (your column index from 0))

或行:

e.SelectedRow

如果 datagridview9 绑定到数据集,则无法更改其值(行)。在这种情况下,您必须取消绑定并更改它的值,或者最好编写整个 c# 代码来填充 datagridview。


推荐阅读