C# 如何以编程方式删除不需要的用户设置?

C# 如何以编程方式删除不需要的用户设置?,c#,winforms,C#,Winforms,我目前正在使用MSDN()中的示例保存用户配置设置 这很适合我的需要,因为我需要存储的对象数量可能因运行而异。由于用户可以随意创建或销毁对象,我需要跟踪这些对象并相应地更新设置文件。我使用SettingsKey来读/写每个对象,因为对象之间的属性可能不同。每个对象都有一个我在SettingsKey中使用的唯一id 我观察到的是:每个对象都被正确地保存和恢复。但是,当对象被销毁时,它将保留在设置文件中 我需要从设置文件中删除已销毁的对象。 这是怎么做到的?我还没有找到任何代码示例来说明如何做到这一

我目前正在使用MSDN()中的示例保存用户配置设置

这很适合我的需要,因为我需要存储的对象数量可能因运行而异。由于用户可以随意创建或销毁对象,我需要跟踪这些对象并相应地更新设置文件。我使用SettingsKey来读/写每个对象,因为对象之间的属性可能不同。每个对象都有一个我在SettingsKey中使用的唯一id

我观察到的是:每个对象都被正确地保存和恢复。但是,当对象被销毁时,它将保留在设置文件中

我需要从设置文件中删除已销毁的对象。 这是怎么做到的?我还没有找到任何代码示例来说明如何做到这一点

这些在代码前面声明: 用户设置uSet; uSet=新用户设置()

以下是保存对象的代码:

  for (int i = 0; i < CurrrentViewportCount; i++)  
    {  
        if (VP_ID[i] != -1)  
        {  
            uSet.SettingsKey = "Viewport" + VP_ID[i];  
            foreach (Control cP in this.Controls)  
            {  
                if (cP.Name.Equals(uSet.SettingsKey) == true)  
                {  
                    Viewport VP = (Viewport)cP;  
                    uSet.PanelName = VP.Name;  
                    uSet.PanelID = VP.PanelID;  
                    uSet.ConnectionName = VP.SourceMRL;  
                    uSet.Save();  
                    break;  
                }  
            }  
        }  
        else  
        {  
            //  Need to remove unused object  
        }  
    }  
for(int i=0;i
如果它关闭,我为格式化(缩进)道歉。这是我的第一篇文章,我试着遵循发布代码的准则

我已经考虑过删除user.config文件并重新加载,但我感觉Reload()只会从app.exe.config重新创建user.config,而不会向我显示一个“空”user.config文件

总而言之,我的主要问题是如何删除特定的用户设置


感谢您的帮助。

您一次只保存一个视口吗?如果没有可靠地再现问题,很难甚至不可能准确地知道最佳答案。也就是说,如果您遇到的问题是API本身没有为您提供对实际文件内容的足够细粒度控制,那么您可能需要将单个对象的存储打包到一个序列化集合中,以便您可以根据需要显式删除它们(即,整个集合将以其确切状态存储…删除的对象将不存在)。我正在保存FormClosing事件上的所有视口。感谢您提供的格式帮助!@Peter Duniho:我觉得提供的代码足以描述我正在使用的解决方案,因为还有许多其他解决方案。此解决方案似乎是最简单、最快的实现方法。问题是如何在没有其他解决方案的情况下删除不再需要的数据完全重新编写代码。由于我是新手,我非常感谢您对我需要发布的内容提出任何建议,以及我发布的内容,以使其成为一个好的、最少的、完整的代码示例。谢谢!