環境はVisual Studio 2005, WindowsXPです。
コンボボックスの項目一覧をDrawItemイベントを使って描画しました。
一覧の中では「うまい!」という文字列を前に付加して編集しています。
それを選択した後に入力欄に反映することはできないのでしょうか。
現在のソースではうまい!料理を選択すると
入力欄には料理と反映されてしまいます。
よろしくお願いします。
Private Sub ComboBox1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem
e.DrawBackground()
Dim cmb As ComboBox = CType(sender, ComboBox)
'項目に表示する文字列
Dim txt As String
If e.Index > -1 Then
txt = "うまい!" & cmb.Items(e.Index).ToString()
Else
txt = cmb.Text
End If
'使用するフォント
Dim f As New Font(txt, cmb.Font.Size)
'使用するブラシ
Dim b = New SolidBrush(e.ForeColor)
'文字列を描画する
e.Graphics.DrawString(txt, f, b, e.Bounds.X, e.Bounds.Y)
f.Dispose()
b.Dispose()
'フォーカスを示す四角形を描画
e.DrawFocusRectangle()
End Sub
ソースは下記を参考に作りました。
http://dobon.net/vb/dotnet/control/cbownerdraw.html
入力欄には、ComboBoxの中身が出るからですね。
現状は画面表示上だけ、うまい!"が付いているけど、
ComboBoxのItemの中身は「料理」です。
「うまい!料理」とするなら、Itemの内容を変える。
ComboBox1.Items.Add()を使って値を入れる前に変換したものを
入れることで解決しました。
ありがとうございます。