You need to enable JavaScript to run this app. 使用AdvancedDataGridView列筛选如何保留单元格与文本颜色信息
优惠活动
大模型
产品
解决方案
定价
更多

使用AdvancedDataGridView列筛选如何保留单元格与文本颜色信息

开发场景与现存问题
  • 项目开发环节使用AdvancedDataGridView控件,已实现右键菜单自定义目标单元格背景色、单元格文本显示颜色的功能
  • 启用列筛选功能后,所有已配置的自定义颜色信息会完全丢失;即便后续移除全部筛选条件,之前设置的颜色也无法恢复到对应单元格位置
  • 目前已开发对应工具类,用于在应用启动、退出阶段分别加载、保存DataGridView(DGV)的颜色配置,核心实现代码如下:
public static void WriteDataGridViewSettings(System.Windows.Forms.DataGridView dgv)
{
    XmlTextWriter writer = new XmlTextWriter(Application.StartupPath + @"\MyGridColor.xml", null);
    writer.WriteStartDocument();
    writer.WriteStartElement(dgv.Name);
    int LastRow = dgv.Rows.Count;
    for (int i = 0; i < LastRow; i++)
    {
        writer.WriteStartElement("Row");
        writer.WriteStartElement("CellColor");
        writer.WriteString(dgv.Rows[i].DefaultCellStyle.BackColor.ToArgb().ToString());
        writer.WriteEndElement();
        writer.WriteStartElement("TextColor");
        writer.WriteString(dgv.Rows[i].DefaultCellStyle.ForeColor.ToArgb().ToString());
        writer.WriteEndElement();
        writer.WriteEndElement();
    }
    writer.WriteEndElement();
    writer.WriteEndDocument();
    writer.Close();
}

public static void ReadDataGridViewSettings(System.Windows.Forms.DataGridView dgv)
{
    XmlDocument xmldoc = new XmlDocument();
    XmlNodeList xmlnode;
    FileStream fs = new FileStream(Application.StartupPath + @"\MyGridColor.xml", FileMode.Open, FileAccess.Read);
    xmldoc.Load(fs);
    xmlnode = xmldoc.GetElementsByTagName("Row");
    for (int i = 0; i <= xmlnode.Count-1; i++)
    {
        int cellcolor = int.Parse(xmlnode[i].ChildNodes.Item(0).InnerText.Trim());
        int textcolor = int.Parse(xmlnode[i].ChildNodes.Item(1).InnerText.Trim());
        if (cellcolor != 0)
        {
            dgv.Rows[i].DefaultCellStyle.BackColor = Color.FromArgb(Convert.ToInt32(cellcolor));
            dgv.Rows[i].DefaultCellStyle.ForeColor = Color.FromArgb(Convert.ToInt32(textcolor));
        }
        else
        {
            dgv.Rows[i].DefaultCellStyle.BackColor = Color.White;
            dgv.Rows[i].DefaultCellStyle.ForeColor = Color.Black;
        }
    }
    fs.Close();
}

现有持久化逻辑的衍生故障

受列筛选触发样式丢失的问题影响,用户使用筛选功能后直接退出应用时,工具类会将已经丢失自定义颜色的网格状态写入配置文件,导致此前手动设置的所有自定义颜色信息被永久覆盖丢失。


内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 13:45:11