如何将ColorDialog结果转换为十六进制?

时间:2015-12-12 20:58:22

标签: vb.net

我希望在我的应用中实现基本的ColorPicker,我需要的是,当用户点击TextBox时出现ColorPicker,当用户选择颜色时TextBox 1}} 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)

究竟是什么意思?我怎么解决?

1 个答案:

答案 0 :(得分:3)

根据Plutonix的建议,答案很简单,我这样修理:

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 = String.Format("#{0:X2}{1:X2}{2:X2}", cDialog.Color.R, cDialog.Color.G, cDialog.Color.B)
        resource_colore.Text = hex_color
    End If

End Sub

感谢所有人