【问题标题】:C# Handling two buttons within the DataGridViewC# 处理 DataGridView 中的两个按钮
【发布时间】:2017-12-30 09:18:42
【问题描述】:

我目前正在开发一个显示用户订单的 C# 项目。

现在,由于我是新手,请您帮助我了解如何从 DataGridView 中访问这两个按钮并赋予它们单独的功能。

我在代码方面的优势:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (vHisOrd_BtnDelivered.Selected)
    {

    }
    else if (vOrdHis_Btn.Selected)
    {

    }
}

DataGridView 图像:

【问题讨论】:

  • 传递给点击处理程序的事件参数将具有列索引和行索引。如果没有别的,您可以使用这些来确定单击了哪个按钮并在适当的行上采取行动
  • 您应该在调试器中检查 sendere 以查看是哪个按钮导致事件触发。
  • 感谢 Caius Jard,它现在可以工作了 :)

标签: c# winforms datagridview


【解决方案1】:

您可以将 DataGridViewButtonColumn 添加到 datagridview 并使用 cellcontentclick 事件

使用 e.ColumnIndex 确定要执行的代码

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    DataGridView dgv = (DataGridView)sender;

    if (dgv.Columns[e.ColumnIndex] is DataGridViewButtonColumn &&
        e.RowIndex >= 0)
    {
        //TODO - Button Clicked - Execute Code Here
    }
}

【讨论】:

  • 并没有真正解决问题,但它确实让我知道了如何解决它。谢谢!
【解决方案2】:

使用 ColumnIndex 代替行名

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    DataGridView dgv = (DataGridView)sender;

    //use index in your gridView
    if (dgv.Columns[e.ColumnIndex] == 2)
    {
        //vHisOrd_BtnDelivered    
    }
    else if (dgv.Columns[e.ColumnIndex] == 3)
    {
        //vOrdHis_Btn
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 2015-06-08
    • 1970-01-01
    相关资源
    最近更新 更多