C# 我可以在XtraGrid上仅为一行设置行单元格值为只读吗?

C# 我可以在XtraGrid上仅为一行设置行单元格值为只读吗?,c#,winforms,devexpress,xtragrid,C#,Winforms,Devexpress,Xtragrid,如何在XtraGrid上使特定行单元格只读(不可编辑)?例如,仅针对行[0],而不是所有行 您可以使用事件: 您可以使用以下事件: 来源: 当您需要基于某个条件将网格单元设置为只读时 最好的方法是使用 GridView并阻止通过传递给事件的e.Cancel参数进行编辑。当需要预防时,只需将其设置为True 编辑 来源- 另一种方法是按照@DmitryG的建议分配一个只读存储库编辑器控件,我也曾在有一列包含按钮时实现过这种方法 在您的情况下,您应该创建两个TextEdit存储库项。一个 启用按钮和

如何在XtraGrid上使特定行单元格只读(不可编辑)?例如,仅针对行[0],而不是所有行

您可以使用事件:

您可以使用以下事件:

来源:

当您需要基于某个条件将网格单元设置为只读时 最好的方法是使用 GridView并阻止通过传递给事件的e.Cancel参数进行编辑。当需要预防时,只需将其设置为True 编辑

来源-
另一种方法是按照@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;    
    }
}