单击行/列的单元格时,每行都可以看到DatagridviewButtonColumn

时间:2014-03-24 10:13:59

标签: c# datagridview datagridviewbuttoncolumn

我有一个Datagridview,它有一些文本框列。在这个Datagridview中,我在第三列之后添加了DataGridViewButtoncolumn,我将其设置为visible = false,如下面的代码所示。

DataGridViewButtonColumn btnEllipse = new DataGridViewButtonColumn();

btnEllipse.Text = "...";
btnEllipse.FillWeight = 6;
btnEllipse.MinimumWidth = 20;
btnEllipse.Width = 20;
btnEllipse.DividerWidth = 0;
//btnCompanyProperty.HeaderText = "To Company/Property";
btnEllipse.UseColumnTextForButtonValue = true;
dgvForecast.Columns.Insert(4, btnEllipse);
dgvForecast.Columns[4].Visible = false;
dgvForecast.Columns[dgvForecast.Columns["BaseValue"].Index + 1].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

dgvForecast.Columns[dgvForecast.Columns["BaseValue"].Index + 1].Width = 20;
dgvForecast.Columns["BaseValue"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;

dgvForecast.Columns["BaseValue"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleRight;

现在我的问题是,当我点击索引3单元格时,我只需显示此按钮单元格。现在 当我单击索引3单元格时,这显示完整的按钮列,如下图所示。我只想显示所选行按钮单元格而不是完整按钮列。

enter image description here

我希望当我单击第一行值单元格时,第一行按钮单元格应该是可见的,当我单击第二行时,单元格第一行按钮应该是不可见的,当前行按钮应该是可见的。

1 个答案:

答案 0 :(得分:0)

您无法隐藏DataGridView中的特定单元格。 DataGridView中没有对此的直接支持。

执行此操作的一种方法是使用自定义属性创建自定义DataGridViewButtonColumn以控制可见性,并在设置此属性时覆盖paint方法以使用背景颜色绘制矩形。它类似于msdn论坛问题removehide-button-on-datagridview中提供的那些。

使用上面的自定义列,您可以在CellEnter/RowEnter事件中显示该单元格,并将其隐藏在CellLeave/RowLeave事件中。