コンボボックスのDrawItemで編集した文字列を選択後にテキストへ反映させるには

解決


うい  2008-05-04 12:28:06  No: 139670

環境は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


やじゅ  2008-05-04 21:13:54  No: 139671

入力欄には、ComboBoxの中身が出るからですね。
現状は画面表示上だけ、うまい!"が付いているけど、
ComboBoxのItemの中身は「料理」です。
「うまい!料理」とするなら、Itemの内容を変える。


うい  2008-05-11 09:50:03  No: 139672

ComboBox1.Items.Add()を使って値を入れる前に変換したものを
入れることで解決しました。
ありがとうございます。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加