我们可以在ColorIDialog中保存选定的自定义颜色吗?

时间:2013-02-19 06:42:12

标签: winforms vb.net-2010

表单关闭时显示colordialog时出现问题。我们可以在VB.NET的colordialog中保存自定义颜色选择吗?

2 个答案:

答案 0 :(得分:3)

您可以使用CustomColors属性获取和设置自定义颜色。这是一个int数组,其颜色格式为00BBGGRRB为蓝色,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.

  1. 首先,使用“我的项目”中的GUI,添加名为String的{​​{1}}类型的设置,稍后我们将更改类型。
  2. 在解决方案资源管理器的顶部,单击“显示所有文件”,展开“我的项目”。
  3. 您应该看到一个Settings.settings文件,右键单击该文件,然后选择“打开方式”,然后选择XML(文本)编辑器。

文件内容如下:

Settings.settings

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[]"

Form1.vb:

下面是一些示例代码,展示了如何使用此技术:

<?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>