私はこのサイトで見つけたコードから色の選択コンボボックスを作成しましたが、今はコードを見つけることができません。色を描画する数値から名前付き色にコンボボックスを選択する方法
コード:
Private Sub cboColorPicker_DrawItem(ByVal sender As Object, ByVal e As DrawItemEventArgs) Handles cboColor.DrawItem, cboBackground.DrawItem
Dim g As Graphics
Dim ItemBrush As Brush
Dim ItemColor As Color
Dim ItemFont As Font
Dim ItemName As String
Dim rect As Rectangle
g = e.Graphics
rect = e.Bounds
If e.Index >= 0 Then
'Get item color name
ItemName = CType(sender, ComboBox).Items(e.Index).ToString
'Get instance a font to draw item name with this style
ItemFont = New Font("Arial", 9, FontStyle.Regular)
'Get instance color from item name
ItemColor = Color.FromName(ItemName)
'Get instance brush with Solid style to draw background
ItemBrush = New SolidBrush(ItemColor)
'Draw the item name
g.DrawString(ItemName, ItemFont, Brushes.Black, rect.X, rect.Top)
'Draw the background with my brush style and rectangle of item
g.FillRectangle(ItemBrush, rect.X, rect.Y, rect.Width, rect.Height)
End If
End Sub
私はこのようなコンボボックスを移入:
Private Sub PopulateColorCombo(ByVal cbo As ComboBox)
cbo.Items.Add("Black")
cbo.Items.Add("Blue")
cbo.Items.Add("Lime")
cbo.Items.Add("Cyan")
cbo.Items.Add("Red")
cbo.Items.Add("Fuchsia")
cbo.Items.Add("Yellow")
cbo.Items.Add("White")
cbo.Items.Add("Navy")
cbo.Items.Add("Green")
cbo.Items.Add("Teal")
cbo.Items.Add("Maroon")
cbo.Items.Add("Purple")
cbo.Items.Add("Olive")
cbo.Items.Add("Gray")
End Sub
私はint型としてデータベースに値を格納し、例えば黒になります-16777216。
これは、ユーザーがレポートをカスタマイズできるフォームの一部です。データベースに格納されているものに基づいて色を表示するために、データが読み込まれるときにコンボを更新したいと思います。私はこれをするように見えることはできません。
だから私はロードデータはHDI.Color = -16777216
Color.FromArgb(HDI.Color).ToString = "Color [A=255, R=0, G=0, B=0]"
Color.FromArgb(HDI.Color).Name = "ff000000"
と言うしかし、私は実際の色名を取得することはできません。次の作業はありません。
cboColor.SelectedIndex = cboColor.FindStringExact(Color.FromArgb(HDI.Color).ToKnownColor.ToString)
cboColor.SelectedIndex = cboColor.FindStringExact(CType(Color.FromArgb(HDI.Color), Color).ToString)
cboColor.SelectedIndex = cboColor.FindStringExact(System.Drawing.ColorTranslator.FromHtml(Color.FromArgb(HDI.Color).Name).ToString)
私はこのタスクに間違ったコンボボックスを使用していますか?それを動作させる方法はありますか?
私はフルカラーピッカーを提供したくなかった。なぜなら、彼らは多くの色を使わないので、私はそれをユーザーにとって単純なものにしようとしていた。私は色を半分に減らすかもしれません。
[カラーピッカーコンボボックス](https://stackoverflow.com/a/25616698/719186)からコードを取得していると思います。あなたはあなたのコンボボックスに "文字列"を追加しているので、データベースに "文字列"を保存すると思います。 – LarsTech
コードが漏れています。各項目に新しいフォントは必要ありません。 cboを目的のフォントに設定し、それを使用します。また、ブラシを配置する必要があります – Plutonix
データベースに 'Color.ToArgb'値を格納する代わりに、KnownColor列挙値を保存してください。そうすれば、KnownColorを再作成してその名前にアクセスできます。 – TnTinMn