C# datagridview column.readonly不适用于一列
我有一个DataGridView(在winforms应用程序中)和几个列,我想在代码中设置一些列为只读。 这适用于除一列之外的所有列,由于某种原因,这一列拒绝成为只读。属性ReadOnly是在代码中设置的,当我检查该属性时,它将为True,但列仍然是可编辑的。 什么会导致这种行为 到目前为止,我的代码是:C# datagridview column.readonly不适用于一列,c#,winforms,datagridview,C#,Winforms,Datagridview,我有一个DataGridView(在winforms应用程序中)和几个列,我想在代码中设置一些列为只读。 这适用于除一列之外的所有列,由于某种原因,这一列拒绝成为只读。属性ReadOnly是在代码中设置的,当我检查该属性时,它将为True,但列仍然是可编辑的。 什么会导致这种行为 到目前为止,我的代码是: private void SetColumnsReadOnly() { bool readOnlyValue = true; // _IsInvoicedPurchase || _Is
private void SetColumnsReadOnly()
{
bool readOnlyValue = true; // _IsInvoicedPurchase || _IsInvoicedSales;
gttDataGridViewCar.Columns["ID"].ReadOnly = readOnlyValue;
gttDataGridViewCar.Columns["Name"].ReadOnly = readOnlyValue;
gttDataGridViewCar.Columns["Status"].ReadOnly = readOnlyValue;
// this one does not wants to get readonly !!!!
gttDataGridViewCar.Columns["Reason"].ReadOnly = readOnlyValue;
}
执行此方法后,除列“Reason”外,所有列都将是只读的。此列的属性ReadOnly为True,但仍可以编辑
有人知道为什么会发生这种情况吗
编辑:
datagridview绑定到BindingSource,BindingSource绑定到用代码填充的DataTable
编辑:
已验证代码是否已执行
我在表单上放置了一个按钮,在执行setColumnsRedonly()后检查列的状态列的只读属性为TRUE,但它仍然是可编辑的我可以通过将此列在列表中上移一列来解决我的问题。 这篇专栏文章为什么会有这样的表现仍然是一个很大的疑问,我担心有一天这个问题会再次出现。
此外,将列1向上移动也没有任何逻辑原因可以解决问题,除了此列的索引没有任何更改。您在哪里调用
setcolumnsreadoly
,它是文本框
列?从提供的代码中看不到太多。你能验证你的程序是否真的进入了这个方法吗?你能检查一下DataGridView
的所有引用,看看是否还有其他地方进行了一些操作吗?是的,所有代码都已验证,没有比这更多的代码了,因此我无法显示更多,程序会逐步进入代码,您也可能知道,因为正如我所说的,代码对所有其他列都有效,当您将其移回时会发生什么情况??我确实将其移回(无论如何,它必须位于该位置),当您将索引中有问题的列向上移动时,问题不会返回(直到现在),现在继承旧攻击性索引的专栏现在是否表现出同样的不良行为?