首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在使用列过滤器时保留DataGridView颜色信息(单元格和文本)?

在使用列过滤器时,要保留DataGridView的颜色信息(包括单元格的颜色和文本颜色),可以采取以下步骤:

  1. 在DataGridView中设置自定义属性:在DataGridView的Columns集合中的每个列对象中,可以添加一个自定义属性,用于存储原始的单元格颜色和文本颜色信息。可以使用Tag属性来实现此目的。将每个单元格的颜色信息和文本颜色信息保存在对应的列的Tag属性中。
  2. 使用列过滤器时,获取并保存当前的过滤条件:当用户使用列过滤器来筛选数据时,需要获取当前的过滤条件。可以通过DataGridView的DefaultView属性来获取过滤后的数据视图,然后获取过滤条件并保存下来。
  3. 在重新应用过滤器后,还原颜色信息:当用户重新应用过滤器时,需要还原之前保存的颜色信息。可以通过DataGridView的CellFormatting事件来实现。在该事件中,可以获取当前单元格的行和列索引,然后根据保存的颜色信息将单元格的颜色和文本颜色还原。

这样,在使用列过滤器时,就可以保留DataGridView的颜色信息。在还原颜色信息时,可以使用DataGridViewCellStyle对象来设置单元格的颜色和文本颜色。

以下是一个示例代码,演示了如何实现上述步骤:

代码语言:txt
复制
// 步骤1: 设置自定义属性保存颜色信息
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
    column.Tag = new Dictionary<int, Color>();
}

// 步骤2: 获取并保存当前的过滤条件
DataView filteredView = (DataView)dataGridView1.DataSource;
string filter = filteredView.RowFilter;

// 步骤3: 还原颜色信息
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    DataGridView dataGridView = (DataGridView)sender;

    if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
    {
        DataGridViewColumn column = dataGridView.Columns[e.ColumnIndex];

        // 获取保存的颜色信息
        Dictionary<int, Color> colorDict = (Dictionary<int, Color>)column.Tag;

        if (colorDict.ContainsKey(e.RowIndex))
        {
            // 设置单元格的颜色和文本颜色
            e.CellStyle.BackColor = colorDict[e.RowIndex];
            e.CellStyle.ForeColor = Color.Black; // 设置文本颜色为黑色
        }
    }
}

// 当重新应用过滤器时,需要重新保存颜色信息和过滤条件
private void ApplyFilter(string filter)
{
    // 清空保存的颜色信息
    foreach (DataGridViewColumn column in dataGridView1.Columns)
    {
        ((Dictionary<int, Color>)column.Tag).Clear();
    }

    // 设置过滤条件
    ((DataView)dataGridView1.DataSource).RowFilter = filter;

    // 重新保存颜色信息
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        foreach (DataGridViewColumn column in dataGridView1.Columns)
        {
            // 保存单元格的颜色信息和文本颜色信息
            Color cellColor = row.Cells[column.Index].Style.BackColor;
            ((Dictionary<int, Color>)column.Tag)[row.Index] = cellColor;
        }
    }
}

以上代码示例中,我们通过添加自定义属性来保存颜色信息,并在重新应用过滤器时还原颜色信息。在CellFormatting事件中,根据保存的颜色信息设置单元格的颜色和文本颜色。在ApplyFilter方法中,我们清空保存的颜色信息,设置过滤条件,并重新保存颜色信息。

这样,在使用列过滤器时,DataGridView的颜色信息就会被保留下来。如果需要腾讯云相关产品和产品介绍,可以根据实际需求选择适合的产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C# winform DataGridView 常见属性

); 关于性能: 通过 AutoSizeColumnsMode 或者 AutoSizeRowsMode 属性所指定的单元格进行自动调整,如果调整次数过于多那么将可能导致性能下降, 尤其是在行数比较多的情况下...对于单元格窄小,无法完全显示的单元格, ToolTip 可以显示必要的信息。...(详细参见 MSDN) 3) 单元格的边框颜色的设定 单元格的边框线的颜色可以通过 DataGridView.GridColor 属性来设定的。默认是 ControlDarkDark 。...示例: [VB.NET] ‘ 单元格的上边左边线设为二重线 ‘ 单元格的下边右边线设为单重线 DataGridView1.AdvancedCellBorderStyle.Top = _ DataGridViewAdvancedCellBorderStyle.InsetDouble...当Value属性被设定表示用的文本之后,把FormattingApplied属性做为True,告知DataGridView文本已经格式化完毕。

3.8K40

c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)

对于单元格窄小,无法全然显示的单元格, ToolTip 能够显示必要的信息。...(具体參见 MSDN) 3) 单元格的边框颜色的设定 单元格的边框线的颜色能够通过 DataGridView.GridColor 属性来设定的。默认是 ControlDarkDark 。...相同,ColumnHeadersBorderStyle 以及 RowHeadersBorderStyle 仅仅有在被设定为 Single ,才干改变颜色。...演示样例: ‘ 单元格的上边左边线设为二重线 ‘ 单元格的下边右边线设为单重线 DataGridView1.AdvancedCellBorderStyle.Top = _ DataGridViewAdvancedCellBorderStyle.InsetDouble...当Value属性被设定表示用的文本之后,把FormattingApplied属性做为True,告知DataGridView文本已经格式化完成。

4.1K10
  • C#—— DataGridView控件的各种操作总结(单元格操作,属性设置)

    对于单元格窄小,无法完全显示的单元格, ToolTip 可以显示必要的信息。...(详细参见 MSDN) 3) 单元格的边框颜色的设定 单元格的边框线的颜色可以通过 DataGridView.GridColor 属性来设定的。默认是 ControlDarkDark 。...示例: ' 单元格的上边左边线设为二重线 ' 单元格的下边右边线设为单重线 DataGridView1.AdvancedCellBorderStyle.Top = _ DataGridViewAdvancedCellBorderStyle.InsetDouble...); 关于性能: 通过 AutoSizeColumnsMode 或者 AutoSizeRowsMode 属性所指定的单元格进行自动调整,如果调整次数过于多那么将可能导致性能下降,尤其是在行数比较多的情况下...比起 使用循环遍历,使用该事件来设定右键菜单的效率更高。但是,在DataGridView使用了DataSource绑定而且是VirtualMode的 候,该事件将不被引发。

    7.9K32

    【转】基于C#的WinForm中DataGridView控件操作汇总

    对于单元格窄小,无法完全显示的单元格, ToolTip 可以显示必要的信息。...(详细参见 MSDN) 3) 单元格的边框颜色的设定 单元格的边框线的颜色可以通过 DataGridView.GridColor 属性来设定的。默认是 ControlDarkDark 。...示例: ' 单元格的上边左边线设为二重线 ' 单元格的下边右边线设为单重线 DataGridView1.AdvancedCellBorderStyle.Top = _ DataGridViewAdvancedCellBorderStyle.InsetDouble...当Value属性被设定表示用的文本之后,把FormattingApplied属性做为True,告知DataGridView文本已经格式化完毕。...); 关于性能: 通过 AutoSizeColumnsMode 或者 AutoSizeRowsMode 属性所指定的单元格进行自动调整,如果调整次数过于多那么将可能导致性能下降,尤其是在行数比较多的情况下

    5.3K50

    【愚公系列】2023年11月 Winform控件专题 DataGridView控件详解

    在CellStyle编辑器中,可以设置奇数行偶数行的背景颜色、字体、前景颜色等样式属性。也可以选择使用其他样式。...:根据显示的单元格内容自适应单元格宽度,除了标题。...ColumnHeadersDefaultCellStyle:用于设置标题单元格的默认样式。可以设置颜色、字体、对齐方式等属性。...2.常用场景数据展示:DataGridView控件可以用来展示各种类型的数据,包括文本、数字、日期等等。可以通过设置的属性来控制数据的呈现形式。...可以通过设置的属性来控制哪些可以过滤,以及过滤条件。数据选择:DataGridView控件可以允许用户选择一行或多行数据。可以通过设置控件的属性来控制选择模式,单选、多选等。

    1.8K11

    可视化数据库设计软件有哪些_数据库可视化编程

    2)登录到服务器上,并显示服务器的数据库系统服务,包括事件日志、消息队列、性能计数器、系统服务SQL数据库。 3)查看关于可用Web服务的信息以及使信息可用的方法架构。...如果数据源为 IBindingListView,并支持高级排序,则获取用于排序排序顺序信息的多个列名。...5.DataGridView的编辑 单击DataGridView控件的设计器中“编辑”选项,或者在DataGridView控件的“属性”面板中单击Columns属性右侧的省略按钮,即可进入“编辑...DividerWidth:分隔线宽度。 MinimumWidth:最小宽度,设置最小宽为5。 Width:当前字段宽度。 2)设计。 ① Name:字段名。...② ColumnType:用于选择的类型,有如下类型。  DataGridViewTextBoxColumn:文本。  DataGridViewButtonColumn:按钮。

    6.7K40

    DataGridView控件中加入ComboBox下拉列表框的实现

    控件中     this.dgv_User.Controls.Add(cmb_Temp); }   当用户选择的单元格移动到性别这一,我们要显示下拉列表框,添加如下事件 private void dgv_User_CurrentCellChanged...ValueTag属性(Tag为值文本,Value为显示文本) private void dgv_User_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs...控件中             this.dgv_User.Controls.Add(cmb_Temp);         }         // 当用户移动到性别这一单元格显示下拉列表框        ...this.cmb_Temp.Visible = false;         }         // 改变DataGridView将下拉列表框设为不可见         private void...ValueTag属性(Tag为值文本,Value为显示文本)         private void dgv_User_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs

    3.7K20

    【C#】让DataGridView输入中实时更新数据源中的计算

    DataGridView(下称dgv),A、B两都要在dgv中显示,其中A可编辑(ReadOnly=false)。...需求是对A进行编辑(输入或删除),B能实时变化。例如下面的例子: ? 【目标文件名】是根据【款号】【色号】计算而来(连接字符串),当编辑款号/色号,目标文件名能实时变化。...非得是焦点离开这一行(去到别的行,或者其它控件),计算才会更新。——这段话信息量略大,不熟悉dgv提交机制的猿友可能得借助下面进一步的说明才能明白~老鸟请绕道。...),但dtdv没有,后者只到行这一级,虽然可以通过DataRow[x]或DataRowView[x]访问单元格的值,但在类层级上并不存在DataCell这样的表示单元格的实体类,也就是dtdv的编辑...粗略一看,是EM_SETSEL,经过了解,就是EM_SETSEL,所以接下来要做的就是自定义一个文本编辑控件,让它忽略这个消息,完了让这个控件成为dgv单元格中的文本编辑控件。

    5.2K20

    DataGridView控件用法一:数据绑定

    DataGridView控件,可以显示编辑来自多种不同类型的数据源的表格数据。 将数据绑定到DataGridView控件非常简单直观,在大多数情况下,只需设置DataSource属性即可。...与基于文本的值一起使用,在绑定到数字字符串类型的值自动生成 DataGridViewCheckBoxColumn 与booleancheckState值一起使用,在绑定到这些类型的值自动生成...,通常用来做未绑定 DataGridViewComboBoxColumn 用户在单元格中显示下拉列表,不会在绑定时自动生成,通常需要手动进行数据绑定 DataGridViewLinkColumn 用于在单元格中显示超链接...将数据绑定到DataGridView控件上非常简单直观,在大多数情况下,只需设置DataSource属性即可。...的CheckBox /// /// 要创建DataGridView ///

    3.9K20

    excel常用操作大全

    此外,您可以使用文本框”按钮轻松地在斜线的顶部底部添加文本,但是文本周围有边框。...要取消,请选择中文文本框,弹出菜单,选择“设置文本框格式”“颜色线条”,然后选择“线条”-“颜色”-“无线条颜色”。 20、如何快速输入数据序列?...如果您想修改这些受保护单元格的内容,您需要输入密码。 24、如何使单元格颜色底纹不被打印出来?对于那些受保护的单元格,您还可以设置颜色底纹,以便用户可以一目了然。...名字的公式比单元格地址引用的公式更容易记忆阅读。例如,公式“=SUM”显然比使用单元格地址更简单、更直观,而且不容易出错。 27.如何在公式中快速输入不连续的单元格地址?...当我们在工作表中输入数据,我们有时会在向下滚动记住每个标题的相对位置,尤其是当标题行消失时。此时,您可以将窗口分成几个部分,然后将标题部分保留在屏幕上,只滚动数据部分。

    19.2K10

    Excel催化剂开源第23波-VSTO开发辅助录入功能关键技术

    在Excel催化剂的几大辅助录入功能中(数据验证保护、数据多级联动输入、关键词模糊智能匹配输入)中,用了一些customxmlPart技术来存储配置信息,同时在关键词模糊智能匹配输入中,用了一个VSTO...自定义控件,可直接用到工作表单元格中 具体实现原理 通过用户配置操作,将需要进行快速录入的区域记录下来,用SelectionChange事件来响应,若用户选择到这些单元格,就激发事件方法,显示自定义控件...键的功能,默认为窗体退出键TabIndex跳转键,这里有个对一个方法进行重写即可。...,想跳出来选择其他单元格 { switch (e.KeyCode) {....Rows.Cast().Any(s => s.Selected); //当dgv有选择 if (isDgvSelected)

    1.3K10

    03.HTML头部CSS图像表格列表

    : 实例 现在通常使用font-family(字体),color(颜色),font-size(字体大小)属性来定义文本样式,而不是使用标签。...但某些标签确无法通过修改父级标签来改变子级标签特性,a标签,修改其颜色特性,必须直接修改 a 标签的特性才可。...HTML 图像- Alt属性 alt 属性用来为图像定义一串预备的可替换的文本。 替换文本属性的值是用户定义的。 在浏览器无法载入图像,替换文本属性告诉读者她们失去的信息。...此时,浏览器将显示这个替代性的文本而不是图像。为页面上的图像都加上替换文本属性是个好习惯,这样有助于更好的显示信息,并且对于那些使用文本浏览器的人来说是非常有用的。...属性值默认单位为像素: 提示: 指定图像的高度宽度的一个很好的习惯。如果图像指定了高度宽度,页面加载就会保留指定的尺寸。如果没有指定图片的大小,加载页面时有可能会破坏HTML页面的整体布局。

    19.4K101

    WinForm使用DataGridView实现类似Excel表格的查找替换

    在桌面程序开发过程中我们常常使用DataGridView作为数据展示的表格,在表格中我们可能要对数据进行查找或者替换。...1、数据展示 建一个WinForm窗体 GridDataWindow ,放上菜单DataGridView控件,添加4用来显示信息。 ?...这个窗体主要是用来控制查找替换的文本,选择范围是当前列还是整个数据表格。...窗体中主要是查找替换文本的值,选中的查找范围是否能设置查找范围变量;还包括4个事件,4个事件在GridDataWindow 中添加用于响应操作。...LookUpHandler:点击查找,根据选择的范围值依次查找表格单元格。 ReplaceHandler:替换文本,根据选择的范围值依次查找表格单元格,如果查找到则替换。

    1.8K41

    普通表格常见设置

    根据是否给字段使用统计函数来区分,可划分为细节数据表格汇总表格。...一、组件格式修改 表格常见的设置--组件格式,这里可以修改单元格内容的对齐方式,单元格字体,表格边框,字体颜色背景颜色,组件透明度。...4、设置颜色 在表格组件上右击,选择组件格式,在颜色页签中设置字体颜色表格背景颜色,背景颜色可以设置为单色、双色、图片等。...二、局部格式 局部格式组件格式不同的是:局部格式是针对所选中的内容设置的格式修改,单元格,表标题,表头等,组件格式是针对组件设置的格式修改。...[1505204144101_9824_1505204142709.png] 图8 3、设置高亮过滤器,这里过滤器跟普通过滤器设置不同的是,除了可以根据数据集中数据来设置,还可以设置每隔几行显示不同的格式

    1.8K10

    吐槽下Excel的十大不规范使用问题

    同样的问题也出现在单元格颜色标注上,这些的标注,可以美观加分一点,但如果是为了区分数据,有更进一步的数据分析意义,请加上一,把不同行的信息区分用文字来落实表达出来。...初级水平:功能实现了,却破坏了原来的颜色标注,使原有的颜色标注被清除了。 高级水平:无论是颜色标注还是条件格式的颜色,都可以保留,完美实现功能所需。...就算各家插件有几种能耐帮你重新从一堆文本里把需要的信息提取出来,但这个意义何在,这就是加班做的事么?...简单一个转换大小写功能,处理成了全部大写,但哪天想看回原始的数据是怎样的,已经没法返回,或更有一些是一个信息量很大的单元格里,如上文的猪肉,3斤,油8两,青菜800克。。...制作带斜表头,各种交叉表、各种大小类小计手工引用多个单元格求和等等。报表出来就是一大张,A4纸都不够排,数据有几十上百,看得了这头忘记那头,看报表当然要用聚光灯功能。

    1.2K20

    Excel 常用的九十九个技巧 Office 自学教程快速掌握办公技巧

    17、如何复制粘贴行宽复制表格区域内内容,点击空白处单元格粘贴,在粘贴后区域右下侧的粘贴选项中选择【保留宽】。...29、日期双位显示单元格数据区域内日期需要双位显示 2020/01/01 ,可直接选中表内数据,按【Ctrl】+数字【1】调出【设置单元格格式】对话框,选择【数字】选项卡,点击【自定义】,设置类型为...71、按特定符号拆分数据点击 “数据” 选项下的 “分列”,按要求把数据分离即可,注意有身份证号码银行卡号等信息,要在分列第三步中将数据格式设置为文本。...79、隔行填充颜色使用 Ctrl+T 键。80、快速创建柱形图使用 Alt+F1 键 。...99、表格瞬间高大尚表格采用粗边框,标题行用深色填充白色字体,正文表格采用标题行相同颜色的浅色调。

    7.1K21

    HTML 基础

    通用属性,大部分元素都会具备的属性 (1). id 定义元素在页面中独一无二的名称 (2). title 鼠标移入到元素上所提示的信息 (3). class 指定元素所引用的类选择器(CSS 中使用)... 预格式化 ,保留标记内的格式(回车 空格) 21. 块级元素行内元素 (1). 块级元素,每一个块级元素独占一行, 块级元素的主要作用布局 (2)....设置单元格外边距,单元格单元格之间的距离 (7). bgcolor:背景颜色 28....不规则表格,通过 td 的 colspan rowspan 属性创建不规则的表格、 ①. colspan 跨合并,在一行中,从指定单元格位置处开始,横向向右合并几个单元格(包含自己),被合并掉的单元格要删除... 表示定义列表 定义列表中的标题(事物,名词) 对标题(事物,名词)解释说明的内容 往往用于给出一类事物的定义情形,:名词解释,多用于图文混排使用

    4.2K10

    C#使用NPOI进行word的读写

    该变量的含义是某个颜色的RGB值(在NPOI里所有的颜色都是以这种形式表示的)。...cell.Tables;//获取嵌套单元格使用 row.Rows //获取表格所有行; row.GetTableICells() ;//获取表格行的所有单元格; 获取到单元格之后就可以获取单元格里的文本段落...(Paragraphs)并且进行文本替换 创建表格 var table = doc.CreateTable(行数, 数); table.Width = 5000; 控制表格中宽(这里需要注意,只设置一行的宽一旦插入文字就会使设置的宽失效...simple.docx", FileMode.Create); doc.Write(out1); out1.Close(); 运行结果: 实例2:实现了表的简单操作:创建表、创建行、创建单元,单元行的合并...,创建单元格就创建了一个CT_P CT_Tc cttc = cell.GetCTTc(); CT_TcPr ctPr = cttc.AddNewTcPr

    2.8K10

    Excel公式大全,高手进阶必备

    第二部分:必备的Excel技巧 一、excel中当某一单元格符合特定条件,如何在另一单元格显示特定的颜色比如: A1〉1,C1显示红色 0<A1<1,C1显示绿色 A1<0,C1显示黄色 方法如下...还可以定义一些提示信息、出错警告信息是否打开中文输入法等,定义好后点"确定"。 2、用条件格式避免重复。...(一)、如果是要求A、B两的同一行数据相比较: 假定第一行为表头,单击A2单元格,点“格式”->“条件格式”,将条件设为: “单元格数值”“不等于”=B2 点“格式”->“字体”->“颜色”,选中红色...六、如何判断单元格里是否包含指定文本?...假定对A1单元格进行判断有无"指定文本",以下任一公式均可: =IF(COUNTIF(A1,"*"&"指定文本"&"*")=1,"有","无") =IF(ISERROR(FIND("指定文本",A1,1

    2.6K50

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券