有条件地在DataGridView中显示按钮?

时间:2014-06-27 19:14:16

标签: c# winforms datagridview

如果,例如,列A具有值?

,如何在DataGridView的单元格中显示按钮
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
        }
    }
}

3 个答案:

答案 0 :(得分:1)

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

cell.Controls[0].Visible = false;

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

您需要将包含单元格的按钮投射到DataGridViewButtonCell。如果CellButton Cell,则var cell = dgv.Rows[e.RowIndex].Cells[dgv.Columns["B"].Index] as DataGridViewButtonCell; cell.Visible = false; 可以转换为此类。

使用此:

{{1}}