如何根据 Combobox 的值更改 DataGridView 单元格颜色?

2023-12-13

我有一个 datagridview 如下:

enter image description here

我想:

  • 当表单加载时,如果Gender列的值为Male,列对应的颜色单元格Name将会是白色的

  • 当 if 改变列的值时Gender:男 → 女,该列的颜色单元格Name将是深灰色, 否则如果更改列的值Gender:女 → 男,该列的颜色单元格Name将会是白色的

我尝试过,但我无法做到:

    private void dataGridView_CurrentCellDirtyStateChanged(object sender, EventArgs e)
    {
        DataGridView dgv = sender as DataGridView;
        DataGridViewCell cell = dgv.CurrentCell;

        if (dgv.Rows[cell.RowIndex].Cells["Gender"].Value.ToString().Trim() == "Male")
        {
            // Male
            dgv.Rows[cell.RowIndex].DefaultCellStyle.BackColor = Color.White;
        }
        else
        {
            // Female
            dgv.Rows[cell.RowIndex].DefaultCellStyle.BackColor = Color.DarkGray;
        }
    }

OR:

    private void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        DataGridView dgv = sender as DataGridView;

        if (dgv.Columns[e.ColumnIndex].Name.Equals("Gender"))
        {
            if (e.Value != null && e.Value.ToString().Trim() == "Male")
            {
                e.CellStyle.BackColor = Color.White;
            }
            else
            {
                e.CellStyle.BackColor = Color.DarkGray;
            }
        }

        //if (dgv.Rows[e.RowIndex].Cells["Gender"].Value.ToString().Trim() == "Male")
        //{
        //    e.CellStyle.BackColor = Color.White;
        //}
        //else
        //{
        //    e.CellStyle.BackColor = Color.DarkGray;
        //}
    }

有关这些的任何提示都会有很大帮助。提前致谢。


要更改背景颜色,您必须订阅CellFormatting事件。然后将此代码添加到事件处理程序中:

private void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    DataGridView dgv = sender as DataGridView;

    if (dgv.Columns[e.ColumnIndex].Name.Equals("Gender"))
    {
        if (e.Value != null && e.Value.ToString().Trim() == "Male")
        {
            dgv.Rows[e.RowIndex].Cells["name"].Style.BackColor = Color.White;
        }
        else
        {
            dgv.Rows[e.RowIndex].Cells["name"].Style.BackColor = Color.DarkGray;
        }
    }

}

在您的选择中选择新值时进行验证DataGridViewComboBoxCell,订阅CurrentCellDirtyStateChanged事件并在其处理程序中尝试以下代码:

private void dataGridView_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
    DataGridView dgv = sender as DataGridView;
    DataGridViewCell cell = dgv.CurrentCell;
    if (cell is DataGridViewComboBoxCell)
    {
        dgv.CommitEdit(DataGridViewDataErrorContexts.Commit);
        dgv.EndEdit();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据 Combobox 的值更改 DataGridView 单元格颜色? 的相关文章

  • C# 打印问题(RichTextBox)

    我想打印我的 RichTextBox eintragRichTextBox 的内容 我现在有这个代码 private void druckenPictureBox Click object sender EventArgs e PrintD
  • 在路由mvc 4中添加公司名称

    我一直在尝试为 Facebook 等用户提供在 URL 中添加公司名称的选项 http localhost 50753 MyCompany Login 我尝试过不同的网址 但没有成功 routes MapRoute name Default
  • 如何在另一个应用程序中挂钩 api 调用

    我正在尝试挂钩另一个应用程序的 ExtTextOut 和 DrawTextExt GDI 方法调用 我知道我需要使用 GetProcAddress 来查找 gdi32 dll 中那些方法的地址 并用我的函数的地址覆盖我想要挂钩的进程中的地址
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • 从代码中,如何创建对存储在附加属性中的对象的属性的绑定?

    我们有一个继承的附加属性来存储一个对象 在可视化树的更下方 我们希望从代码绑定到该对象的属性 通常我们像这样构建绑定的路径部分 var someBinding new Binding Path new PropertyPath Attach
  • 在 C# 中调用 C++ 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有很多用 C 编写的库 我想从 C 调用这些库 但是 我遇到了很多问题 我想知道是否有书籍或指南告诉我如何做到这一点 Dll导入 htt
  • 如何使用 SOAP 且不使用 WSE 在 .NET 中签署 Amazon Web 服务请求

    亚马逊产品广告 API 以前称为 Amazon Associates Web Service 或 Amazon AWS 实施了一项新规则 即自 2009 年 8 月 15 日起 向其发送的所有 Web 服务请求都必须经过签名 他们在其网站上
  • 在开关中使用“goto”?

    我看到了一个建议的编码标准 内容如下Never use goto unless in a switch statement fall through 我不跟 这个 例外 案例到底是什么样的 这证明了goto 此构造在 C 中是非法的 swi
  • 如何制作可启动程序?

    所以 这个问题可能看起来很奇怪 但假设我编译了 int main void int x 3 int y 4 int z x y 是否可以让CPU这样运行 如何 例如 这允许我写入监视器吗 如果我没记错的话 内存中有些地方可以写入要显示的内容
  • C# 编译器不会优化不必要的强制转换

    前几天 在写答案的时候这个问题 https stackoverflow com questions 2208315 why is any slower than contains在这里 关于溢出 我对 C 编译器感到有点惊讶 它没有按照我的
  • 析构函数中的异步操作

    尝试在类析构函数中运行异步操作失败 这是代码 public class Executor public static void Main var c1 new Class1 c1 DoSomething public class Class
  • 使用具有抗锯齿功能的 C# 更改抗锯齿图像的背景颜色

    我有一个图像需要更改背景颜色 例如 将下面示例图像的背景更改为蓝色 然而 图像是抗锯齿的 所以我不能简单地用不同的颜色替换背景颜色 我尝试过的一种方法是创建第二个图像 仅作为背景 并更改其颜色并将两个图像合并为一个图像 但是这不起作用 因为
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • 为什么 Cdecl 调用在“标准”P/Invoke 约定中经常不匹配?

    我正在开发一个相当大的代码库 其中 C 功能是从 C P Invoked 的 我们的代码库中有很多调用 例如 C extern C int stdcall InvokedFunction int 使用相应的 C DllImport CPlu
  • 如何从 Rx Subscribe 回调异步函数?

    我想回调 Rx 订阅中的异步函数 例如 像那样 public class Consumer private readonly Service service new Service public ReplaySubject
  • 在 C#.NET 中安全删除文件

    在我正在做的一个项目中 我想为用户提供 安全 删除文件的选项 例如 用随机位或 0 覆盖它 在 C NET 中是否有一种简单的方法可以做到这一点 效果如何 你可以调用系统内部删除 http technet microsoft com en
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • C++ 中 void(*)() 和 void(&)() 之间的区别[重复]

    这个问题在这里已经有答案了 在此示例代码中 func1是类型void int double and funky是类型void int double include
  • 使用 using 声明时,非限定名称查找如何工作?

    根据 C 标准 这是格式错误还是格式良好 namespace M struct i namespace N static int i 1 using M i using N i int main sizeof i Clang 拒绝它 GCC
  • 为什么匹配模板类上的部分类模板特化与没有模板匹配的另一个部分特化不明确?

    这个问题可能很难用标题中的句子来描述 但这里有一个最小的例子 include

随机推荐

  • LD_LIBRARY_PATH

    我可以为单个应用程序设置 LD LIBRARY PATH 吗 我正在调查系统调用失败 那么有什么方法可以使用 LD LIBRARY PATH 设置设置正确的路径 最简单的方法是创建一个 shell 脚本 让 shell 脚本导出新的 LD
  • 使用 dompdf 生成 pdf 图像时出错

    我必须在生成的 PDF 的每一页中显示徽标 虽然它在本地系统中工作正常 但在服务器中抛出以下异常 Fatal error Uncaught exception PDFlibException with message Handle para
  • 如何在 JScrollPane 中获取 JScrollPanes 以跟随父级的大小调整

    所以我有一堆JTables Each JTable是在一个里面JScrollPane 然后我将添加其中的每一个JScrollPanes to a JPanel 然后我添加这个JPanel to a JScrollPane然后到另一个JPan
  • 为什么我无法用 Prolog 得到 Ship Puzzle 的答案?

    我需要使用 Prolog 解决 Ship Puzzle 问题 以下是事实 有5艘船 希腊的船六点出发 载着咖啡 中间的船有一个黑色的烟囱 英国船九点出发 有蓝色烟囱的法国船位于一艘运载咖啡的船的左侧 运载可可的船的右侧是一艘开往马赛的船 这
  • 检测序列的排列

    我有一个像这样的数字列表 数组 1 2 3 4 所以我的目标是检查给定的另一个数组 如果该数组是原始示例的排列 则该数组 3 4 1 2 and 1 2 4 3 是原始的排列 但是 1 2 1 1 or 1 5 4 3 not 两种可能的解
  • 确定重叠 DATETIME 范围的最大数量

    我有一张桌子 上面有一些DATETIME范围 比如 id start end 1 2011 12 18 16 00 00 2011 12 18 17 00 00 2 2011 12 19 08 00 00 2011 12 19 10 00
  • 何时从 QAbstractItemModel 发出 dataChanged

    在 Qt 中 我有一个模型子类化QAbstractItemModel 它是显示在 QTreeView 中的树 该模型支持各种形式的更改 并且都可以正常工作 相关的两个是 1 少量相关行中的部分数据发生变化 2 可视化更改意味着大多数行应更改
  • 从线性探测转向二次探测(哈希冲突)

    我当前的哈希表实现是使用线性探测 现在我想转向二次探测 后来转向链接 也许还有双重哈希 我读过一些文章 教程 维基百科等 但我仍然不知道我到底应该做什么 基本上 线性探测的步长为 1 这很容易做到 当从哈希表中搜索 插入或删除元素时 我需要
  • tinyMCE 编辑栏未显示

    我正在运行 Plone 4 1 4 当我尝试编辑用于显示tinyMCE 编辑器的文本区域时 我得到的只是一个列出 有效元素 字典的对话框 我安装了 kupu 编辑器并且工作正常 但我更喜欢tinyMCE 有人遇到过这个问题吗 任何帮助将不胜
  • 如何反序列化包含不同类型对象的json数组

    这是一个 json 片段 其中包含一个数组 图标 其中可以包含两种不同类型的对象 应用程序和文件夹 icons application displayName Facebook bundleId com facebook com folde
  • npm 安装错误 - 无法获取本地颁发者证书

    我正在得到一个unable to get local issuer certificate执行 npm install 时出错 typings ERR message Unable to read typings for es6 shim
  • 向内存中的特定地址/位置显式分配或访问值?

    我的确切问题是 其中有任何规定c and c 将值显式分配给特定地址例如假设我想存储20 at 0x1846010内存中的地址 我还想使用同一地址访问一个值 0x1846010 可能很容易 但我真的很困惑如果可以的话如何做到这一点 任何人都
  • JSF f:ajax 不会立即渲染

    我有这样的输入文本
  • VS code,julia linter 不起作用(在 Mac 上)

    在向自己保证 Julia 已启用并且 linter 也已启用 在 VS Code 设置中 Julia Lint Run 后 我在 xxx jl 脚本上得到语法高亮显示 但根本没有 linting 我在最新的 vs code 最新的朱莉娅 1
  • C 中的正则表达式:示例?

    我正在寻找一些关于如何在 ANSI C 中使用正则表达式的简单示例和最佳实践 man regex h并没有提供那么多帮助 正则表达式实际上不是 ANSI C 的一部分 听起来您可能正在谈论 POSIX 正则表达式库 它随大多数 所有 nix
  • Visual Studio 包构建和私有 bin 路径中的 DLL

    我正在使用 MEF 来做一种粗略的插件架构 这运作良好 但是 当我使用 Visual Studio 包 发布构建任务 我通过 NAnt MSbuild 调用 进行部署时 我未引用的插件程序集未包含在包中 因此未部署 有没有办法告诉 VS M
  • 使用 NetBeans 从 java 项目制作可执行文件 [重复]

    这个问题在这里已经有答案了 我在 NetBeans 中创建了一个 java 项目 现在我想用它制作一个可执行文件 该文件可以在安装了 JDK 或 JRE 但没有安装 NetBeans 或任何其他 Java IDE 的其他计算机上执行 运行
  • android hellomap 示例给出异常

    06 14 22 13 33 992 ERROR AndroidRuntime 331 Uncaught handler thread main exiting due to uncaught exception 06 14 22 13 3
  • JavaFXPorts(Gluon 插件) 在 Android 上保存文件

    我在使用 JavaFxPorts 在 Android 上保存文件时遇到问题 我找到了那个链接here 但这对我不起作用 它没有找到接口 我无法使用它 我的目标是使用 JavaFxports 在 Android 上保存文件 Thanks 如果
  • 如何根据 Combobox 的值更改 DataGridView 单元格颜色?

    我有一个 datagridview 如下 我想 当表单加载时 如果Gender列的值为Male 列对应的颜色单元格Name将会是白色的 当 if 改变列的值时Gender 男 女 该列的颜色单元格Name将是深灰色 否则如果更改列的值Gen