从动态数据网格视图的最后一行中删除对象

本文关键字:一行 对象 删除 最后 数据 动态 数据网 网格 视图 | 更新日期: 2023-09-27 18:00:04

我有一个winform datagridview:

 DataTable table = new DataTable();
        table.Columns.Add("Check", typeof(bool));
        table.Columns.Add("User", typeof(string));
        table.Columns.Add("Path", typeof(string));
        table.Columns.Add("Status", typeof(Image));

        using (RegistryKey root = Registry.LocalMachine.OpenSubKey("SOFTWARE''xyz"))
        {
            foreach (string keyname in root.GetSubKeyNames())
            {
                using (RegistryKey key = root.OpenSubKey(keyname))
                {
                    if (keyname == sentKeyName)
                    {
                        foreach (string valuename in key.GetValueNames())
                        {
                            if (key.GetValue(valuename) is String)
                            {
                                Image image = Image.FromFile(@"Image1.jpg");
                                table.Rows.Add(false, valuename, key.GetValue(valuename), image);
                            }
                        }
                    }
                }
            }                             
        }
        dataGridView1.DataSource = table;
        dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; 

现在,我在表中放置了一个图像和复选框,如上所示。

当我有值时,它工作得很好,但对于最后一行,它是空白的,可以编辑,由复选框和错误图像符号填充。

还有一种方法可以将一列设置为只读。

有什么建议

感谢

从动态数据网格视图的最后一行中删除对象

您得到了额外的一行,因为您允许用户添加新行。如果您想禁用添加新行(并隐藏难看的额外行),请使用以下命令:

dataGridView1.AllowUserToAddRows = false;

要使单列只读,请执行以下操作:

dataGridView1.Columns["Status"].ReadOnly = true;

请确保在设置DataSource之后调用此。

更新:

我目前无法测试任何东西,只能测试DataGridViewImageColumn。DefaultCellStyle属性似乎是您想要的,特别是:

防止错误图形出现在新记录的行中当控件AllowUserToAddRows属性值为true,您还必须显式设置单元格值在已添加控件行的处理程序事件或设置列CellTemplate属性的实例DataGridViewImageCell派生类型具有重写的DefaultNewRowValue返回null或您自己的属性错误图形。