2

我在窗体关闭时显示颜色对话框时遇到问题。我们可以在 VB.NET 的颜色对话框中保存自定义颜色选择吗?

4

2 回答 2

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 属性。

于 2013-02-19T07:43:27.973 回答
2

由于这个问题被标记为 VB.NET 2010,我将提供一个兼容的 VB.NET 答案。

自定义颜色

如果用户在使用 时添加自定义颜色,您可以使用该属性ColorDialog访问这些颜色。CustomColors它将它们的颜色作为Integer().

使用My.Settings

存储这些自定义颜色最方便的位置可能是My.Settings,它为您提供了一个简单的位置来存储每个用户的设置,如果您正在寻找的话。

如果您尝试Integer()使用 GUI 添加类型化设置,您会发现它不起作用,Visual Studio 不支持。

幸运的是,您仍然可以通过手动编辑 Settings.settings 文件来完成这项工作。

(感谢Jen-Ari 提供了这个相关的有用答案。

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

该文件的内容将如下所示:

设置.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>

表格1.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
于 2018-07-20T22:59:46.420 回答