【问题标题】:c# DataGridViewButtonColumn auto clickc# DataGridViewButtonColumn 自动点击
【发布时间】:2015-06-26 18:09:06
【问题描述】:

我的程序中有一个DataGridView,它有一个DataGridViewButtonColumn。 当用户单击该按钮时,它会在另一个面板上显示更多详细信息。

我在尝试执行以下操作时遇到问题:

在下单界面点击“发送”按钮,将订单发送到数据库,DataGridView会自动更新,但用户仍需点击行上对应的列按钮才能查看更详细。

我想要做的是当用户点击发送时,它会自动找到与orderID对应的行,并自动点击那个按钮。

这就是我所拥有的:

  foreach(DataGridViewRow row in OutOrderListGridView.Rows){
                string compareID = row.Cells[0].Value.ToString();
                if (compareID == OrderID)
                {
                    row.Cells[10].Selected = true;  <-- here i want to performClick() on the columnbutton(cell[10]) on the specific row.
                }
            }

谢谢。

【问题讨论】:

  • 每一行都有自己的“发送”按钮吗? WinForms 还是 WPF?
  • WindForms,每一行都有自己的按钮,假设我想单击位于第 10 列的第 5 行按钮,我想在该按钮上执行单击。我知道普通按钮有 performclick(),但我想对 columnbutton 做同样的事情

标签: c# datagridview


【解决方案1】:

我不是 100% 确定我完全理解您的目标,但如果我是正确的,您希望执行以下操作,前提是 CellClick 事件正在处理您想要最终实现的任何目标。

您可以使用已知值手动引发事件,而不是“执行”点击(PerformClick())...这应该对您有用,但在给定未知变量的情况下,在您的特定应用程序中略微未经测试。下面的代码也必须稍微修改以适应。

for (int i = 0; i < OutOrderListGridView.RowCount; i++)
  {
      if (OutOrderListGridView[0, i].Value.ToString() == OrderID)
      {
          OutOrderListGridView_CellClick(OutOrderListGridView, new DataGridViewCellEventArgs(10, i));
          break;
      }
  }

必须将foreach 循环更改为for 循环,以便利用foreach 循环不提供的当前索引(循环位置)。

字符串比较不需要两步,因此被相应地压缩了。

我还在循环中添加了break,因为我认为一旦找到匹配项,遍历剩余的行将毫无意义。

【讨论】:

  • 感谢您的回复,等我回到我的电脑上测试一下
  • 这看起来像我认为的解决方案应该是什么。只需进行一次编辑:对于DataGridViewButtonColumn,您应该使用CellContentClickCellClick,正如here 所解释的那样。
  • @OhBeWise 好点。我想在一天结束时它会被实现,但是首先处理单元格按钮单击,但是 +1 用于在 CellClick 上使用 CellContentClick
猜你喜欢
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多