由于这个问题被标记为 VB.NET 2010,我将提供一个兼容的 VB.NET 答案。
自定义颜色
如果用户在使用ColorDialog 时添加了自定义颜色,您可以使用CustomColors 属性访问这些颜色。它以Integer() 的形式返回它们的颜色。
使用My.Settings
存储这些自定义颜色最方便的位置可能是My.Settings,如果您需要的话,它可以让您轻松存储每个用户的设置。
如果您尝试使用 GUI 添加 Integer() 类型的设置,您会发现它不起作用,Visual Studio 不支持。
幸运的是,您仍然可以通过手动编辑 Settings.settings 文件来完成这项工作。
(感谢Jen-Ari for this related useful answer.)
- 首先,使用“我的项目”中的 GUI,添加名为
CustomColors 的 String 类型设置,稍后我们将更改类型。
- 在解决方案资源管理器顶部,单击“显示所有文件”,展开“我的项目”。
- 您应该会看到一个 Settings.settings 文件,右键单击该文件,然后选择“打开方式”,选择 XML(文本)编辑器。
文件的内容如下所示:
Settings.settings
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="My" GeneratedClassName="MySettings" UseMySettingsClassName="true">
<Profiles />
<Settings>
<Setting Name="CustomColors" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>
将Type="System.String" 更改为Type="System.Int32[]",这样你就有了:
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="My" GeneratedClassName="MySettings" UseMySettingsClassName="true">
<Profiles />
<Settings>
<Setting Name="CustomColors" Type="System.Int32[]" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>
Form1.vb:
下面是一些示例代码,展示了如何使用这种技术:
Public Class Form1
Private Sub btnChooseColor_Click(sender As Object, e As EventArgs) Handles btnChooseColor.Click
'I'm assuming that dlgColorDialog has been placed using the Forms designer.
dlgColorDialog.ShowDialog()
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'Load the custom colors from My.Settings into the dialog when the form loads.
dlgColorDialog.CustomColors = My.Settings.CustomColors
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
'Save the custom colors when the form closes.
My.Settings.CustomColors = dlgColorDialog.CustomColors
My.Settings.Save()
End Sub
End Class