在DataGridView中有条件地显示按钮

本文关键字:显示 按钮 有条件 DataGridView | 更新日期: 2023-09-27 18:10:39

如何在DataGridView的单元格中显示按钮,例如,列A有值?

private void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    var dgv = (DataGridView)sender;
    if (dgv.Columns[e.ColumnIndex].Name == "btn")
    {
        var hide= dgv.Rows[e.RowIndex].Cells[dgv.Columns["A"].Index].Value is DBNull;
        var cell = dgv.Rows[e.RowIndex].Cells[dgv.Columns["B"].Index];
        if (hide)
        {
            //cell.Value = null;
            //cell = new DataGridViewTextBoxCell();
            cell.Visible = false; // This dosn't work
        }
    }
}

在DataGridView中有条件地显示按钮

可能最好的方法是绑定到网格视图上的Item_DataBound(我相信这就是它的名称)。然后检查列,看看它是否包含您需要的值。然后你可以像这样在单元格中隐藏特定的控件(在你的帖子中使用大部分代码):

cell.Controls[0].Visible = false;

为其创建自定义DataGridViewCustomDataGridViewColumn,并分配属性以设置visibleinvisible特定的单元格按钮。下面是演示如何为datagridview创建自定义列的示例。http://www.codemag.com/Article/0707061否则,就不可能使任何单元格按钮直接可见或不可见。

您需要将包含cell的按钮转换为DataGridViewButtonCell。如果CellButton Cell,则可以将其强制转换为该类。

使用

:

var cell = dgv.Rows[e.RowIndex].Cells[dgv.Columns["B"].Index] as DataGridViewButtonCell;
cell.Visible = false;