我有一个datagridview
显示一些数据。数据之间有一些行separator rows
所以这些都是readonly
。在某些情况下,整个datagridview
可能是readonly
。但是当我将其切换回readonly = false
时,所有行都是可编辑的。是否有可能无法再手动设置每行的readonly
属性,我的排又回到了以前的状态?的DataGridView只读“错误”
回答
至于我可以看到使用反射器,设置DataGridView.ReadOnly
到true
还将设置ReadOnly
到false
在网格中的所有行和列 - 大概是假设你永远随后要再次设置DataGridView.ReadOnly
到false
。
所以我可以看到你为了避开这个唯一的办法,就是“记住”这行应该由DataGridViewRow.Tag
设置一个合适的值,然后使用该手动还原ReadOnly
状态是只读的,例如。然而,它似乎很清楚
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;
}
}
}
}
:
例如,如果你设置的DataGridViewRow.Tag
属性true
为只读行,你可以处理DataGridView.ReadOnlyChanged
事件与处理程序,看起来像下面未经测试的代码该DataGridView
没有设计成允许其ReadOnly
属性来以这种方式进行切换。也许你可以设计自己的应用程序,让你永远不要需要设置DataGridView.ReadOnly
到true
?
例如,如果要防止用户通过双击单元格编辑,你可以设置DataGridView.EditMode
到DataGridViewEditMode.EditProgramatically
,而不是设置DataGridView.ReadOnly
到true
。
或者,我相信你可以切换'。启用'而不更改单独的行'.ReadOnly'值。 – JosephHirn 2013-03-20 11:53:55
@Ginosaji,看到更新,切换'EditMode'可能比切换'Enabled'好,因为大概这仍然允许您从网格中选择值。 – Joe 2013-03-20 11:55:46
我会尝试看看EditMode 或者我将不得不再次循环遍历所有行,将它们设置为 – 2013-03-20 13:19:33
如果类自己实现,那么你可以设置你的DataGrid1.ReadOnly = true
,使这些需要是只读属性为只读。
这样的:
string _myProperty;
public string MyProperty
{
get{return _myProperty;}
}
我没有实现类,但datagridview没有绑定。我用我的代码 – 2013-03-19 20:14:44
填写它可以提供代码来填充DataGrid吗? – Dilshod 2013-03-19 20:17:35
这是一个很长的代码。我真的没有看到任何用它来发布它,所以这就是为什么我没有把它包含在原来的帖子 – 2013-03-19 20:19:40
如果通过手工填写在DataGridView的代码,而不是将它绑定到数据源,那么你可以一排的只读属性只需设置为true,当你添加它。
如果上述方法不起作用,那么我不明白你的代码实际上做了什么,就像@Dilshod说过,如果你发布它,或者至少与它的要点(http://www.gist.github.com)联系起来会很方便。
这就是我所做的。我在创建行时设置了只读属性。但是在某些情况下,datagridview只能读取(全部),但是某些用户有能力将其重新设置为readonly = false,并且当他们这样做时,整个网格变为readonly = false,即使是未被编辑为可编辑的行在所有 – 2013-03-20 11:14:48
- 1. 只读的DataGridView和IEditableObject
- 2. C#的BindingList只读错误
- 3. datagridview databinding变为只读
- 4. deleterow()只读语句错误
- 5. JSHint提供'只读'错误$
- 6. DataGridView中的某些列是只读的
- 7. 的DataGridView RowValidation错误
- 8. DataGridView类 - 错误()
- 9. DataGridView有错误?
- 10. 错误:只读位置的分配
- 11. 有错误的痛苦与只读
- 12. Mysql错误1036表是只读的
- 13. 在DataGridView中只读列和行
- 14. Datagridview排序错误
- 15. DataGridView删除错误
- 16. DataGridView绘制错误
- 17. C++错误:指定只读位置
- 18. Android只读文件系统错误
- 19. Docker-swarm错误:只读文件系统
- 20. 隐藏datagridview列错误
- 21. 如何修复datagridview错误?
- 22. Vb.Net Datagridview错误处理
- 23. 在DataGridView中的一个问题:datagridview似乎只读给用户(WinForms)
- 24. 如何阻止删除只读DataGridView上的行?
- 25. 当按TAB键跳过只读DataGridView中的单元格
- 26. C#datagridview错误的列索引
- 27. 错误通过数据表中的datagridview
- 28. 如何处理来自DataGridView的错误
- 29. 错误试图添加行的DataGridView
- 30. 错误而试图编辑datagridview的
= true?......... – Sayse 2013-03-19 19:51:52
是啊......对不起,我的意思是将readonly = false的单元格设置为readonly = false,而readonly = true则为readonly = true。我很抱歉不清楚 – 2013-03-19 19:55:19