C# 我可以在XtraGrid上仅为一行设置行单元格值为只读吗?
如何在XtraGrid上使特定行单元格只读(不可编辑)?例如,仅针对行[0],而不是所有行 您可以使用事件: 您可以使用以下事件: 来源: 当您需要基于某个条件将网格单元设置为只读时 最好的方法是使用 GridView并阻止通过传递给事件的e.Cancel参数进行编辑。当需要预防时,只需将其设置为True 编辑 来源-C# 我可以在XtraGrid上仅为一行设置行单元格值为只读吗?,c#,winforms,devexpress,xtragrid,C#,Winforms,Devexpress,Xtragrid,如何在XtraGrid上使特定行单元格只读(不可编辑)?例如,仅针对行[0],而不是所有行 您可以使用事件: 您可以使用以下事件: 来源: 当您需要基于某个条件将网格单元设置为只读时 最好的方法是使用 GridView并阻止通过传递给事件的e.Cancel参数进行编辑。当需要预防时,只需将其设置为True 编辑 来源- 另一种方法是按照@DmitryG的建议分配一个只读存储库编辑器控件,我也曾在有一列包含按钮时实现过这种方法 在您的情况下,您应该创建两个TextEdit存储库项。一个 启用按钮和
另一种方法是按照@DmitryG的建议分配一个只读存储库编辑器控件,我也曾在有一列包含按钮时实现过这种方法 在您的情况下,您应该创建两个TextEdit存储库项。一个 启用按钮和另一个带有禁用按钮的按钮。然后处理 事件并通过必要的 根据 具体情况。有关更多信息,请参阅帮助主题 参考文献:
回答得很好,我一直在寻找一种好方法来解决这个问题,时间比我愿意承认的还要长!:-)
//...
var repositoryItemTextEditReadOnly = new DevExpress.XtraEditors.Repository.RepositoryItemTextEdit();
repositoryItemTextEditReadOnly.Name = "repositoryItemTextEditReadOnly";
repositoryItemTextEditReadOnly.ReadOnly = true;
//...
void gridView1_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e) {
if(e.RowHandle == 0)
e.RepositoryItem = repositoryItemTextEditReadOnly;
}
void gridView1_ShownEditor(object sender, EventArgs e)
{
ColumnView view = (ColumnView)sender;
view.ActiveEditor.Properties.ReadOnly = view.FocusedRowHandle == 0;
}
// disable editing
private void gridView1_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e) {
GridView view = sender as GridView;
e.Cancel = view.FocusedRowHandle == 0;
}
private void gridView1_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e)
{
if (e.Column.Caption == "Any2")
{
if (e.RowHandle == 0)
e.RepositoryItem = columnReadOnlyTextEdit;
else
e.RepositoryItem = columnTextEdit;
}
}