以编程方式更改 DataGridView 行上的只读模式

2024-05-16

在不解释整个上下文的情况下,我的问题基本上是这样的:

我在 Windows 窗体上有一个 datagridview,它绑定到实体框架 DbSet:dbSet<TEntity>.Local.ToBindingList().

如果我设置 datagridview 的ReadOnly属性设置为 true (在设计视图中),然后在我的代码中添加以下语句:

  myDataGridView.Rows[rowIndex].ReadOnly = false;

它直接执行而不改变值! (不,我的数据源是not只读。)

循环遍历行中的单元格并单独设置每个单元格的 ReadOnly 属性也不起作用:

  foreach (DataGridViewCell cell in myDataGridView.Rows[rowIndex].Cells)
  {
      cell.ReadOnly = false;
  }

。只读 http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.readonly.aspx - Gets or sets a value indicating whether the user can edit the cells of the DataGridView control.但它表现得好像不能set因为某些原因。

发生这种情况有什么原因吗?我在想也许 datagridview 的ReadOnly属性将覆盖对特定行/单元格所做的任何更改(即整体形式必须是只读或不是),但显然this http://social.msdn.microsoft.com/Forums/en/winformsdatacontrols/thread/7471dd6e-aced-4131-875b-ff2c645adbd9为某人工作...

还有其他方法可以实现我的最终目标,但我想知道为什么我不能更改此属性,因为这将是适合我的情况的最简单的解决方案。


EDIT:

让我尝试澄清我的问题:

再次,我知道还有其他方法可以实现我的最终目标,但希望得到这个问题的答案:

对于原始示例感到抱歉,但为了轻松复制该问题,请创建一个 WinForm 应用程序,在其上添加一个 datagridview,然后将此代码粘贴到您的项目中:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        dataGridView1.ReadOnly = true;
        string[] row1 = new string[] { "test", "test1" };
        string[] row2 = new string[] { "test2", "test3" };
        string[] row3 = new string[] { "test4", "test5" };
        dataGridView1.Columns.Add("1", "1");
        dataGridView1.Columns.Add("2", "2");
        dataGridView1.Rows.Add(row1);
        dataGridView1.Rows.Add(row2);
        dataGridView1.Rows.Add(row3);

        dataGridView1.Rows[1].ReadOnly = false;
    }
}

如果您在最后一行放置断点并单步执行它,您将看到 ReadOnly 属性不会更改!为什么??


所以我找到了我的问题的解决方案/解决方法,尽管我仍然不确定原因......

显然,如果您想逐行更改 DataGridView 的 ReadOnly 属性,您可以cannot设置mainDataGridView.ReadOnly 属性,显然这会覆盖任何后续更改。

要重用我之前的示例,解决方法是循环遍历行并设置每个ROW'sReadOnly 属性(而不是设置数据网格视图ReadOnly 属性),那么您可以单独更改每一行的 ReadOnly 属性:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        //dataGridView1.ReadOnly = true;
        string[] row1 = new string[] { "test", "test1" };
        string[] row2 = new string[] { "test2", "test3" };
        string[] row3 = new string[] { "test4", "test5" };
        dataGridView1.Columns.Add("1", "1");
        dataGridView1.Columns.Add("2", "2");
        dataGridView1.Rows.Add(row1);
        dataGridView1.Rows.Add(row2);
        dataGridView1.Rows.Add(row3);

        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            row.ReadOnly = true;
        }

        dataGridView1.Rows[1].ReadOnly = false;
    }
}

这对我来说非常有用,但是任何关于为什么我原来问题中的代码不能正常工作的见解将不胜感激!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式更改 DataGridView 行上的只读模式 的相关文章

随机推荐

  • 验证 sql/oracle 中的电子邮件/邮政编码字段

    对于以下方面的一些建议将不胜感激 是否可以通过 oracle 中的 sql 中的某种检查约束来验证电子邮件和邮政编码字段 或者我怀疑 pl sql 带有正则表达式的这种事情 Thanks 这是电子邮件地址的正则表达式语法 包括引号 a zA
  • 使用 Nodemailer 提交电子邮件时 NodeJs 错误

    我已按照以下步骤设置 Nodemailer 1 允许访问 Gmail 中安全性较低的应用程序 2 在app js中写入以下内容 app post reachus send function req res var transporter n
  • 无法创建“DependencyManagementReportTask”类型的任务。 Gradle 新手

    我是 Grails 3 和 Gradle 的新手 我正在努力将应用程序 2 4 4 更新到 Grails 3 2 8 通过升级 我想从头开始构建一个插件 我无法使用声明依赖项的标准方法将其包含到项目中 我正在尝试使用 gradle 构建 g
  • 获取SettingKey[T]的值

    我正在开发一个用于文档生成的插件 我想将所有生成的文件输出到我选择的目录中 该目录可以是SBT的子目录target目录 如下 val newTargetDirectory SettingKey File document target di
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • 如何在 IntelliJ Kotlin 项目中使用条件断点动态调试变量时更改值?

    在 Java 项目中 通过 mis 调试时可以实现这一点 使用条件断点为属性或变量设置值 Java断点 https i stack imgur com I4JL2 png 不幸的是 同样的事情在 Kotlin 项目中是不可能的 错误是 赋值
  • 闭包、部分和装饰器

    我对这三者感到困惑 我知道闭包是由另一个函数返回的函数 并且可以访问封闭范围内的局部变量 example def add nums one def adder two return one two return adder a 10 add
  • 如何计算股价趋势线

    我正在尝试计算并绘制股票价格的趋势线 我查了一些资料 想了一天 也没有什么好的办法 我有每日价格历史记录 想要找到趋势线和价格线之间的交叉点 您能提供一些想法或指导吗 太感谢了 import pandas as pd import quan
  • 从另一列的子字符串创建列

    我有一个 Pandas 数据框对象 我想从现有列的子字符串创建新列 我的数据如下所示 Date variable want1 want2 want3 0 02 01 08 Australia Sydney A Australia Sydne
  • 我的 SQL 表设置为允许该列为 NULL,但是当我运行它时,它说它不能为 NULL。什么/为什么/如何?

    所以我在这里遇到了很奇怪的困境 我的 SQL 表设置为允许 ZipCode 列为空 如下所示 CREATE TABLE dbo Companies CompanyId BIGINT IDENTITY 1 1 NOT NULL PRIMARY
  • Object.keys() 排序标准? [复制]

    这个问题在这里已经有答案了 官方订购标准是什么Object keys 这不是顺序问题 这是一个关于标准的问题 Kaushal Regmi wrote 首先 键是按数字升序排列的整数索引 然后是所有其他字符串键 按照它们添加到对象的顺序排列
  • 使用 AJAX 和 Jquery 自动完成功能填充表单数据

    我想使用自动完成所选项目来填写表单数据 我的自动完成工作正常 但我无法弄清楚如何通过从自动完成文本框中检索项目来填写表单数据 这是我的代码 HttpPost public JsonResult GetAutocomplete string
  • 如何区分 iTunes Connect / Apple TestFlight 上的 STAGE 和 PRODUCTION 版本?

    阶段构建与阶段服务器的对话 阶段服务器与生产服务器尽可能相同 以用于测试目的 生产构建与生产服务器的通信 生产服务器存储真实的关键数据 这些构建本质上是针对同一应用程序的 但是 iTunes Connect 界面将向您显示以下内容 即构建由
  • 如何组合两个 SwiftyJSON 对象

    我有一个 swiftyJSON 对象 例如 location http img http commentCount 0 timestamp 1432460217550 我希望能够向其附加另一个 swiftyJSON 对象 使其看起来像 lo
  • 如何在正则表达式中输入“:”(“冒号”)?

    冒号 在正则表达式中具有特殊含义 但我需要按原样使用它 例如 A Za z0 9 我试图逃避它 但这不起作用 A Za z0 9 在大多数正则表达式实现 包括 Java 的 中 无论在字符类内部还是外部 都没有特殊含义 您的问题很可能是由于
  • 在 github 上的 fork 中跟踪上游的最佳实践

    摘要 对于要维护一组本地更改的上游存储库 处理长期运行跟踪的最佳实践是什么 我想让 github 上的 fork 与上游保持同步 但仍然允许清晰跟踪 fork 特有的更改 对于本次讨论 假设upstream指向主项目存储库并且origin指
  • 根据 pyspark 中的条件从数据框中删除行

    我有一个包含两列的数据框 col1 col2 22 12 2 1 2 1 5 52 1 2 62 9 77 33 3 我想创建一个新的数据框 它只需要行 col1 的值 gt col2 的值 就像注释一样col1 很长类型和col2 有双
  • Boost + Visual Studio 2010 + Windows 平台 SDK 7.1

    有人可以告诉我 bjam 的命令行开关或其他可以使用新的 Windows Platform SDK 7 1 工具链使用 VS2010 进行 boost 编译的东西吗 您可以在普通的视觉工作室项目中设置该选项 默认值是 v100 是平台 7
  • 如果函数声明时没有使用“const”关键字,函数调用签名会出错

    我是 TypeScript 新手 正在学习中呼叫签名 https www typescriptlang org docs handbook 2 functions html call signatures 如果我将函数存储为let or c
  • 以编程方式更改 DataGridView 行上的只读模式

    在不解释整个上下文的情况下 我的问题基本上是这样的 我在 Windows 窗体上有一个 datagridview 它绑定到实体框架 DbSet dbSet