当前位置: 首页 > 编程语言 > C#

DataGridViewRead-OnlyCell分享

时间:2023-04-10 20:49:10 C#

DataGridViewRead-OnlyCell我有一个绑定的DataGridView,其中包含大量数据。问题是某些单元格必须是只读的,当用户使用TAB或ENTER在单元格之间导航时,应该绕过只读单元格。加载后制作某些特定单元格的最佳方法是什么?考虑到网格有大量数据,在设置数据源后循环遍历单元格不是一个好主意。此外,在CellEnter上将单元格设置为ReadOnly不起作用,因为在使用TAB键导航时,我必须已经知道下一个单元格是否为ReadOnly。在绑定数据之前尝试使用列而不是单个单元格:this.dgrid.Columns["colName"].ReadOnly=true;如果需要对列中的单个单元格进行操作,则必须循环并设置For:this.dgridvwMain.Rows[index].Cells["colName"].ReadOnly=true;您可以使用CellBeginEdit事件并在需要禁用单元格时设置e.Cancel=True。PrivateSubDataGridView_CellBeginEdit(senderAsSystem.Object,eAsSystem.Windows.Forms.DataGridViewCellCancelEventArgs)处理DataGridViewMsg.CellBeginEditIfDataGridViewMsg.Rows(e.RowIndex).Cells("disable").Value="Y"Thene.Cancel=TrueEndIfEndSub我没试过这个。但是,您可以在RowEnter事件中将单元格的只读属性设置为true(根据Rashmi的说法)吗?我想当您从一行移动到另一行时应该触发RowEnter事件(或者当您从单元格A1移动到B3时应该触发)。这些有帮助吗?this.dataGridViewEmpList.EditMode=DataGridViewEditMode.EditProgrammatically;一旦该列是只读的(请参阅Rashmi的回复),您就可以处理此事件...作为DataGridView).SelectedCells[0].ReadOnly;返回;这将获得下一个单元格的只读属性。谢谢您可以使用BeginningEdit事件来检查检查单元格是否满足条件,如果不满足则取消操作:在下面的示例中,如果单元格已经包含一个值,它将取消操作,将其视为只读。xaml:c#:privatevoidDataGrid_BeginningEdit(objectsender,DataGridBeginningEditEventArgse){字符串内容=(e.EditingEventArgs.SourceasTextBlock).Text;如果(!(String.IsNullOrEmpty(content)))e.Cancel=true;您是否可以使用模板列而不是绑定列,然后对该字段设置只读条件?然后,您可以提供只读标签和可编辑文本框。标签不会干扰您的标签索引。){%>"/>"/>这里有一个很好的示例:http://blogs.msdn.com/netcfteam/archive/2006/04/25/583542.aspx你只需要覆盖Paint(),我已经在紧凑型框架上使用它来根据单元格内容更改背景颜色,因此在相同的注释上,将它们设置为只读应该没有问题。以上就是C#学习教程:DataGridView只读单元格分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: