datagridview button column Winforms

本文关键字:Winforms column button datagridview | 更新日期: 2023-09-27 18:20:44

我在DataGridView上有一个按钮列,我正在尝试处理Button.Click事件,但单击按钮时没有发生任何事情。有什么帮助吗?

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    MessageBox.Show(e.ColumnIndex.ToString());
    if (e.ColumnIndex == 5)
    {
        MessageBox.Show((e.RowIndex + 1) + "  Row  " + (e.ColumnIndex + 1) + "  Column button clicked ");
    }
}

datagridview button column Winforms

我试过你的示例,它很有效。您真的将事件绑定到您的DataGridView吗?

请检查<YourFormName>.Designer.cs类中的InitializeComponent()方法。它真的有吗

this.dataGridView1.CellClick += 
  new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick);

并且您不删除代码中其他位置的处理程序?

DataGridViewButtonColumn MSDN页面上有这样一句话:

若要响应用户按钮单击,请处理DataGridView.CellClick或DataGridView.CellContentClick事件。在事件处理程序中,可以使用DataGridViewCellEventArgs.ColumnIndex属性来确定单击是否发生在按钮列中。您可以使用DataGridViewCellEventArgs.RowIndex属性来确定单击是否发生在按钮单元格中,而不是列标题上。

让我澄清一下,在c#windows窗体中,数据网格视图的每一行上都有按钮。因此,为了获得datagridview的按钮点击事件,我向您展示了一个对我来说很好的c#代码示例!下面是我的数据网格视图按钮点击事件的c#代码,它运行良好:

private void dgTasks_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        var button = (DataGridView)sender;
        if (button.Columns[6] is DataGridViewColumn && e.RowIndex >= 0)
        {
       MessageBox.Show("You have clicked Cancel button of a row of datagridview ", "Task", MessageBoxButtons.OK, MessageBoxIcon.Information); 
        }
        }

其中dgTasks是我在c#winforms中的数据网格视图的名称按钮。Columns[6]是我的数据网格视图的列号,其中按钮列名为:btnCancel,标题文本:CANCEL和文本:CANCEL。这只是一个样本!希望你觉得它有用。!

听起来您的活动没有正确注册。要进行检查,请在Designer中高亮显示DataGridView控件并选择Properties,在Events下检查CellClick事件是否有条目,如果没有,则应提供一个下拉列表,列出您的事件-选择它,这样可以解决您的问题。