从动态datagridview的最后一行中删除对象

时间:2011-06-23 18:15:46

标签: c# winforms datagridview

我有一个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; 

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

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

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

任何建议

感谢

1 个答案:

答案 0 :(得分:2)

您正在获得额外的行,因为您允许用户添加新行。如果要禁用添加新行(并隐藏丑陋的额外行),请使用以下命令:

dataGridView1.AllowUserToAddRows = false;

要将单列设为只读,请执行以下操作:

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

确保在您设置了数据源后调用此方法。

<强>更新

我目前无法测试任何内容,但DataGridViewImageColumn.DefaultCellStyle属性似乎正是您正在寻找的内容,尤其是:

  

防止出现错误图形   出现在新行记录中   当控件AllowUserToAddRows时   属性值为true,您还必须   要么显式设置单元格值   to null或你自己的错误图形   控制RowsAdded的处理程序   事件或设置CellTemplate列   属性到一个实例   DataGridViewImageCell派生类型   使用重写的DefaultNewRowValue   返回null或您自己的属性   错误图形。