c# - 隐藏或禁用 DataGridView 最后一行中的复选框

标签 c# winforms datagridview datatable

我有一个由数据表加载的 datagridview..

//dgvApprovazione is my DataGridView
//dt is my DataTable
dgvApprovazione.DataSource = dt;

DataTable 代表数据库中表的一部分。

我有这样的情况: enter image description here

我尝试使用这段代码

foreach (DataGridViewRow row in dgvApprovazione.Rows)
{
    if (row.Cells[3].Value != null)
    {
        //CheckBox ckb = row.Cells[3] is check
        if ((Convert.ToBoolean(row.Cells[3].Value)) == true)
        {
            row.Cells[3].ReadOnly = true;
        }
    }
}

但我认为问题出在设置DataTable dt... 我如何删除该复选框?!? 这是第二个问题..我如何删除datagridview中数据表的最后一行。

最佳答案

要禁用添加新行(删除最后一个新行):

保持添加新行启用但隐藏和禁用复选框

  • 处理CellPainting并且不渲染复选框
  • 处理 CellContentClick 并检查单元格是否位于最后一行,不执行任何操作
  • 要防止自动选中和取消选中,请将列 ReadOnly 属性设置为 false

如果你不想渲染复选框,你应该处理 CellPainting事件并阻止绘制复选框:

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
    // I suppose your check box is at column index 0
    if (e.ColumnIndex == 0 && e.RowIndex == dataGridView1.NewRowIndex)
    {
        e.PaintBackground(e.ClipBounds, true);
        e.Handled = true;
    }
}

这不会阻止单击单元格,如果您想阻止运行最后一行单击时的逻辑,您应该处理 CellContentClick事件并检查单击的单元格是否不是新行:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    // I suppose your check box is at column index 0
    // To exclude header cell:  e.RowIndex >= 0  
    // To exclude new row:      celle.RowIndex!=dataGridView1.newRowIndex

    if (e.ColumnIndex == 0 && e.RowIndex >= 0 && e.RowIndex!=dataGridView1.newRowIndex)
    {
        //Put the logic here
    }
}

关于c# - 隐藏或禁用 DataGridView 最后一行中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36279617/

相关文章:

c# - 什么是 ew :CalendarPopup control in aspx

c# - View 中的 Rowspan (mvc4)

c# - 范围数据注释不起作用

c# - 将控件属性(例如颜色)数据绑定(bind)到未显示的字段

VB.NET:清除 DataGridView

mysql - 为什么我的 datagridview 不显示任何结果?

c# - 可以在没有类型的情况下使用泛型吗?

winforms - 如果 ListView 中的 ListViewItems 数量发生变化,是否会触发一个事件? (Windows 窗体)

c# - 如何在 MVC 模式中管理多个表单

.net - 在 DataGridView 中排序时等待光标