我有一个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;
现在我在表格中放置了一个图像和复选框,如上所示。
当我有值时,它工作正常,但是对于最后一行是空白的并且可以编辑,则由复选框和错误图像符号填充。
还有一种方法可以将一列设为只读。
任何建议
感谢
答案 0 :(得分:2)
您正在获得额外的行,因为您允许用户添加新行。如果要禁用添加新行(并隐藏丑陋的额外行),请使用以下命令:
dataGridView1.AllowUserToAddRows = false;
要将单列设为只读,请执行以下操作:
dataGridView1.Columns["Status"].ReadOnly = true;
确保在您设置了数据源后调用此方法。
<强>更新强>
我目前无法测试任何内容,但DataGridViewImageColumn.DefaultCellStyle属性似乎正是您正在寻找的内容,尤其是:
防止出现错误图形 出现在新行记录中 当控件AllowUserToAddRows时 属性值为true,您还必须 要么显式设置单元格值 to null或你自己的错误图形 控制RowsAdded的处理程序 事件或设置CellTemplate列 属性到一个实例 DataGridViewImageCell派生类型 使用重写的DefaultNewRowValue 返回null或您自己的属性 错误图形。