C# 如何从自定义组件(WinForms)添加应用程序设置

C# 如何从自定义组件(WinForms)添加应用程序设置,c#,winforms,application-settings,user-controls,C#,Winforms,Application Settings,User Controls,我有一个WinForms用户控件,当添加到表单时,它应该自动向应用程序设置添加一些元素。(当然,用户应该能够自定义/禁用此行为。) 这样做明智吗?做这件事的“好”方法是什么 [编辑] 控件提供了文件菜单的默认实现,使用者只需在设计器中连接菜单/工具栏项,并实现一些基本事件。其中一部分是最近的文件列表,默认情况下应该记住 我同意消费者需要完全控制是否需要自动添加这些设置 到目前为止,我将文件列表作为公共字符串属性公开,使用者可以将代码添加到init中,并将其从/存储在应用程序配置中。如果可能的话,

我有一个WinForms用户控件,当添加到表单时,它应该自动向应用程序设置添加一些元素。(当然,用户应该能够自定义/禁用此行为。)

这样做明智吗?做这件事的“好”方法是什么

[编辑]
控件提供了文件菜单的默认实现,使用者只需在设计器中连接菜单/工具栏项,并实现一些基本事件。其中一部分是最近的文件列表,默认情况下应该记住

我同意消费者需要完全控制是否需要自动添加这些设置


到目前为止,我将文件列表作为公共字符串属性公开,使用者可以将代码添加到init中,并将其从/存储在应用程序配置中。如果可能的话,我想进一步简化这个过程,这样使用者只需提供设置变量来存储设置(如果他需要的话)。

在控件构造函数中,您可以检查(LicenseManager.UsageMode==LicenseSusageMode.Designtime)然后检查配置条目等等,但我认为这不是个好主意

您的控件可以支持配置条目(如果存在),如果不存在,则具有一些默认行为。作为一名开发人员,这对我来说似乎更容易接受

无论哪种方式,您都应该使用自定义配置节


您可以提供一个自定义配置节处理程序作为控件的一部分,因此需要做的只是在配置文件中连接此节,如果用户需要它,您可以在控件构造函数中检查(LicenseManager.UsageMode==LicenseUsageMode.Designtime),然后检查配置条目等,但我认为这是个坏主意

您的控件可以支持配置条目(如果存在),如果不存在,则具有一些默认行为。作为一名开发人员,这对我来说似乎更容易接受

无论哪种方式,您都应该使用自定义配置节


您可以提供自定义配置节处理程序作为控件的一部分,因此如果用户需要,只需将此节连接到配置文件中即可。我认为您的控件不应向配置文件添加任何内容,除非有人要求它这样做

不过,如果用户“选择”了这个选项,那么我认为您必须向控件添加一些设计器支持。无论是通过ToolBoxItem,还是通过在添加新控件时通知设计器,设计器都必须创建和/或更新所需的配置信息



谢谢你的澄清。您可能想看看,尤其是关于ApplicationSettingsBase的主题。该页面将引导您找到有关.NET 2.0中强类型设置的信息。它允许将默认设置烘焙到控件或其他库代码中,这样,如果设置发生更改,更改将保留到应用程序的配置文件中,无论是每个用户还是整个应用程序。

我认为您的控件不应该向配置文件添加任何内容,除非有人要求它这样做

不过,如果用户“选择”了这个选项,那么我认为您必须向控件添加一些设计器支持。无论是通过ToolBoxItem,还是通过在添加新控件时通知设计器,设计器都必须创建和/或更新所需的配置信息



谢谢你的澄清。您可能想看看,尤其是关于ApplicationSettingsBase的主题。该页面将引导您找到有关.NET 2.0中强类型设置的信息。它允许将默认设置烘焙到控件或其他库代码中,这样,如果设置更改,更改将保留到应用程序的配置文件中,无论是每个用户还是整个应用程序。

我认为这取决于您将从具有可用体验的控件使用者那里获得多少价值。你在卖这个控制器吗?是内用的吗?如果是内部使用,那么创建设计时体验所需的努力可能会被禁止。

我认为这取决于您将从具有可用体验的控件使用者那里获得多少价值。你在卖这个控制器吗?是内用的吗?如果这是供内部使用的,那么创建设计时体验所需的努力可能会令人望而却步。

这是一个玩具项目-我摆弄过设计时控制,我最大的问题是糟糕的文档,但我不怕:)请参阅说明。谢谢。这是一个玩具项目——我摆弄过设计时控件,我最大的问题是糟糕的文档,但我不怕:)请看澄清。谢谢