放在DataGridView上时,按钮不会收到鼠标单击

时间:2016-07-22 13:17:50

标签: c# datagridview buttonclick

我尝试使用Button将文件名和路径加载到DataGridView单元格中。
我将按钮放在如下的单元格上:




  var cellRectangle = dataGridView.GetCellDisplayRectangle(e.ColumnIndex,e.RowIndex,false);
 int buttonX = dataGridView.Location.X + cellRectangle.Location.X + cellRectangle.Width  -  btnLoadFile.Width;
 int buttonY = dataGridView.Location.Y + cellRectangle.Location.Y;

 btnLoadFile.Location = new Point(buttonX + 20,buttonY);
 btnLoadFile.Height = cellRectangle.Height  -  2 ;
 btnLoadFile.Visible = true;
 btnLoadFile.BringToFront();
  




我希望用户单击按钮,在FileDialog等中选择文件。
问题是按钮没有被点击。网格单元格接收点击次数。





有没有人知道它为什么会发生,我该如何处理?




2 个答案:

答案 0 :(得分:0)

试试这个......

dataGridView.Controls.SetChildIndex(btnLoadFile, 0);
// Bring it to the front
btnLoadFile.BringToFront();

也许你不需要最后一行...

答案 1 :(得分:0)

我会使用DataGridViewButtonColumn而不是在网格上方绘制一个按钮。 这样你就可以在每行中找到一个按钮。

https://msdn.microsoft.com/de-de/library/system.windows.forms.datagridviewbuttoncolumn(v=vs.110).aspx

如果您希望将按钮放在另一个显示电子邮件的单元格中,您可以派生所需的editcell类型并实现TextBox和Button的组合,并使该按钮仅在editmode中可见。看这里 https://msdn.microsoft.com/de-de/library/7tas5c80(v=vs.100).aspx 了解更多信息。我会给你发一些代码但不幸的是我只为不同的目的制作了自己的cell / editcontrol。