表单关闭时显示colordialog时出现问题。我们可以在VB.NET的colordialog中保存自定义颜色选择吗?
答案 0 :(得分:3)
您可以使用CustomColors
属性获取和设置自定义颜色。这是一个int
数组,其颜色格式为00BBGGRR
。 B
为蓝色,G
为绿色,R
为红色。您可以将.Net颜色转换为以下格式:
Color myColor = Color.Green;
int ColorAsBGR = (((myColor.B << 16) | (myColor.G << 8)) | myColor.R);
dlgColor.CustomColors = new int[] { ColorAsBGR };
或不使用.Net颜色:
// Get the colors
int[] customColors = dlgColor.CustomColors;
// Set the custom colors
dlgColor.CustomColors = customColors;
您必须在int数组中存储和检索每个自定义颜色,并使用它设置CustomColors属性。
答案 1 :(得分:0)
由于此问题被标记为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.)
String
的{{1}}类型的设置,稍后我们将更改类型。文件内容如下:
CustomColors
将<?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>