【问题标题】:Has anyone else seen this datagridview bug?有没有其他人看过这个 datagridview 错误?
【发布时间】:2019-09-28 17:39:09
【问题描述】:

谁能解释一下?

这行得通

        TrandetlDataGridView.ReadOnly = False
        TrandetlDataGridView.CurrentRow.ReadOnly = True

这不是

        TrandetlDataGridView.ReadOnly = True
        TrandetlDataGridView.CurrentRow.ReadOnly = False

【问题讨论】:

  • 我的问题是,你为什么需要做后者?如果当前行始终可编辑,则网格的默认行为基本相同。
  • 我不需要使用第一个示例。我只是觉得它确实以这种方式工作但不是另一种方式很有趣。

标签: visual-studio winforms datagridview


【解决方案1】:

DataGridView.ReadOnly 属性将覆盖任何行/列/单元格只读属性“如果”网格只读属性设置为true。这可以在第二个发布的“不起作用”的代码中看到。

根据备注部分中DataGridViewRow.ReadOnly 属性的MS 文档...

如果值为 DataGridView.ReadOnly 属性为 true。

一种可能的解决方案是将“网格”只读属性保留为false,然后遍历网格行并将每行的只读属性设置为true。然后,它应该会按预期工作。

下面的例子是用 C# 编写的,但同样的想法也适用于 VB。

首先一个方法循环遍历网格并将每一行的只读属性设置为true...

private void SetRowsReadOnly() {
  foreach (DataGridViewRow row in TrandetlDataGridView.Rows) {
    row.ReadOnly = true;
  }
}

然后,使用您的“不起作用”示例,将设置网格只读属性替换为对上述方法的调用,它应该可以按预期工作。

private void button2_Click(object sender, EventArgs e) {
  SetRowsReadOnly();
  TrandetlDataGridView.CurrentRow.ReadOnly = false;
}

希望这会有所帮助。

【讨论】:

  • 谢谢你,我会试试这个让你知道。
  • 这非常有效。谢谢,这让我发疯了。
猜你喜欢
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
  • 2022-06-29
  • 1970-01-01
  • 2012-09-01
  • 2016-10-27
  • 2019-12-13
  • 1970-01-01
相关资源
最近更新 更多