【发布时间】:2015-12-13 05:09:05
【问题描述】:
我想在我的应用程序中实现一个基本的ColorPicker,我需要的是当用户点击TextBox 时出现ColorPicker 并且当用户选择颜色时TextBox BackColor 获得选择的颜色,我也想在 TextBox 中显示所选颜色的值。这就是我实际所做的:
Private Sub resource_colore_TextChanged(sender As Object, e As EventArgs) Handles resource_colore.Click
Dim cDialog As New ColorDialog
Dim conv As New ColorConverter
cDialog.Color = resource_colore.BackColor
If (cDialog.ShowDialog() = DialogResult.OK) Then
resource_colore.BackColor = cDialog.Color
Dim hex_color As String = Hex(cDialog.Color)
resource_colore.Text = hex_color
End If
End Sub
现在问题是我得到了这个异常:
无法转换“颜色”类型中的参数“数字”
在这一行:
Dim hex_color As String = Hex(cDialog.Color)
究竟是什么意思?我该如何解决?
【问题讨论】:
-
颜色是一种结构(类型),所以不能直接转换。您需要将 R G B 值转换为
String.Format("#{0:X2}{1:X2}{2:X2}", myClr.R, myClr.G, myClr.B) -
我看到了这个,但 System.Drawing.Color 再次与 ColorDialog 没有什么不同?
-
错误信息似乎很有描述性。
Hex函数需要一个数字,而您正在输入一个完全不同的东西(整个颜色)。是的,System.Drawing.Color与ColorDialog不同,但与ColorDialog.Color完全相同。在问这里之前,您不应该做一个小的调试/理解/研究工作吗? -
你也可以使用
ColorTranslator.ToHtml(Color.FromArgb(colorDialog.Color.ToArgb()))
标签: vb.net