我有一个datagridview来显示一些数据。数据之间有一些行是分隔符行,因此这些行是只读的。在某些情况下,整个datagridview可能会是只读的。但是当我将其切换回readonly=false时,所有行都可以编辑。是否有可能让我的行不必手动再次设置每行的readonly属性,而可以像以前一样返回它们?
DataGridView.ReadOnly
设置为true
也会将网格中所有行和列的ReadOnly
设置为false
,大概是认为您永远不会再想将DataGridView.ReadOnly
再次设置为false
。DataGridViewRow.Tag
中设置适当的值,然后手动使用这个值来恢复ReadOnly
状态。DataGridViewRow.Tag
属性的值为true
,则可以使用以下未经测试的处理程序处理DataGridView.ReadOnlyChanged
事件,代码如下:void DataGridView_ReadOnlyChanged(object sender, EventArgs e)
{
DataGridView dataGridView = (DataGridView) sender;
if (!dataGridView.ReadOnly)
{
// DataGridView.ReadOnly has just been set to false, so we need to
// restore each row's readonly state.
foreach(DataGridViewRow row in dataGridView.Rows)
{
if (row.Tag != null && ((bool)row.Tag))
{
row.ReadOnly = true;
}
}
}
}
DataGridView
并没有设计成可以以那种方式切换它的ReadOnly
属性。也许您可以设计应用程序,使其永远不需要将 DataGridView.ReadOnly
设置为 true
?DataGridView.EditMode
设置为 DataGridViewEditMode.EditProgramatically
,而不是将 DataGridView.ReadOnly
设置为 true
。.Enabled
而不更改单个行的.ReadOnly
值。 - JosephHirnDataGrid1.ReadOnly = true
并将需要只读的属性设置为只读。就像这样:string _myProperty;
public string MyProperty
{
get{return _myProperty;}
}