datagridview按钮列Winforms

时间:2012-01-18 11:32:19

标签: c# c#-4.0 datagridview

我在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 ");
    }
}

3 个答案:

答案 0 :(得分:2)

我已经尝试了你的样本,但它确实有效。您是否真的将活动绑定到DataGridView

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

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

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

DataGridViewButtonColumn MSDN页面可以这样说:

  

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

答案 1 :(得分:1)

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

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中我的datagridview的名称。 button.Columns [6] 是我的datagridview的列号,其中我的按钮列名为: btnCancel ,标题文字:取消和文字:< strong>取消即可。 这只是一个样本!希望你觉得它很有用。!

答案 2 :(得分:0)

听起来您的活动未正确注册。要检查,请在Designer中突出显示DataGridView控件并选择Properties,在Events下检查CellClick事件是否有条目,如果不是,则应该有下拉列表应该列出你的活动 - 选择它,这应该可以解决你的问题。