You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WinForm程序无法保存CheckedListBox选中状态问题求助

解决Windows Forms程序关闭时无法保存CheckedListBox选中状态的问题

问题修复步骤

1. 显式调用设置保存方法

用户范围的配置不会自动持久化,必须在程序关闭时手动触发保存。在窗体的FormClosing事件中添加以下逻辑:

private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
    // 将选中项拼接为逗号分隔的字符串
    var selectedItems = string.Join(",", checkedListBox1.CheckedItems.Cast<string>());
    // 赋值到配置项
    Properties.Settings.Default.FoldersToClear = selectedItems;
    // 保存配置到本地文件
    Properties.Settings.Default.Save();
}

2. 启动时加载保存的配置

在窗体的Load事件中读取配置,恢复选中状态:

private void MainForm_Load(object sender, EventArgs e)
{
    var savedItems = Properties.Settings.Default.FoldersToClear;
    if (!string.IsNullOrEmpty(savedItems))
    {
        var savedList = savedItems.Split(',');
        // 遍历列表项,匹配已保存的内容并设置选中
        for (int i = 0; i < checkedListBox1.Items.Count; i++)
        {
            var itemText = checkedListBox1.Items[i].ToString();
            checkedListBox1.SetItemChecked(i, savedList.Contains(itemText));
        }
    }
}

3. 验证Settings配置正确性

  • 确认FoldersToClear的范围为「用户」:应用程序范围的配置是只读的,无法修改保存。
  • 将该配置的默认值设为空字符串,避免启动时加载无效内容。

4. 排查权限问题

如果程序安装在Program Files等系统保护目录,可能没有写入配置文件的权限。可采取以下方案:

  • 将程序安装到用户文档、桌面等非受保护目录
  • 若必须安装到系统目录,可在项目属性中配置应用程序清单,请求管理员权限(非必要不推荐)

验证方法

  1. 选中若干选项后关闭程序
  2. 重启程序,检查选中状态是否保留
  3. 若仍无效,可手动查看配置文件位置:C:\Users\[你的用户名]\AppData\Local\[公司名]\[程序名]\[版本号]\user.config,确认FoldersToClear节点是否有正确内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:12:02