我在窗体关闭时显示颜色对话框时遇到问题。我们可以在 VB.NET 的颜色对话框中保存自定义颜色选择吗?
问问题
1490 次
2 回答
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 属性。
于 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 文件来完成这项工作。
- 首先,使用“我的项目”中的 GUI,添加一个
String
名为 的类型化设置CustomColors
,稍后我们将更改类型。 - 在解决方案资源管理器的顶部,单击“显示所有文件”,展开“我的项目”。
- 您应该看到一个 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 回答