2016-12-31 3 views
1

コンボボックスの項目は表示されません。これは私が持っているコードです:コンボボックスバックカラーとドロップダウンリストが可能ですか?

ComboBox1.BackColor = Color.White 
    ComboBox1.ForeColor = Color.Black 
    ComboBox1.DrawMode = DrawMode.OwnerDrawFixed 
    ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList 
    ComboBox1.FlatStyle = FlatStyle.Standard 
    ComboBox1.Items.Add("LIne 1") 
    ComboBox1.Items.Add("LIne 2") 
    ComboBox1.Items.Add("LIne 3") 
    ComboBox1.Items.Add("LIne 4") 
    ComboBox1.Items.Add("LIne 5") 
    ComboBox1.Items.Add("LIne 6") 
    ComboBox1.Text = ComboBox1.Items(0) 

そして、これは私がそれを実行するときに、私が見たものである。

enter image description here

私は私のコードで間違って何をしているのですか?

ComboBox1.DrawMode = DrawMode.OwnerDrawFixed

その行であなたはコンボボックス伝えるためです:

答えて

0

これは、あなたが任意の項目が表示されないことになりますラインであるねえ、私は自分自身を描画をやってるの 。そして、その時からコンボボックスは何かを描きたいときにイベントDrawItemを起こすでしょう。あなたがそれを購読してそれを処理するのはあなた次第です。この場合の処理​​は、次のことを意味します。イベント内の指定されたGraphicsオブジェクトに何かを描画します。ここで

があることない単純な実装である:あなたがあなた自身の項目を描画することを計画していなかった場合は、オフコース描画モード行を削除することができます

Private Sub ComboBox1_DrawItem(sender As Object, e As DrawItemEventArgs) Handles ComboBox1.DrawItem 
    Dim Brush = Brushes.Black 
    If (e.State And DrawItemState.ComboBoxEdit) = DrawItemState.ComboBoxEdit Then 
     Brush = Brushes.Yellow 
    End If 
    If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then 
     Brush = Brushes.SteelBlue 
    End If 

    Dim Point = New Point(2, e.Index * e.Bounds.Height + 1) 

    ' reset 
    e.Graphics.FillRectangle(New SolidBrush(ComboBox1.BackColor), 
     New Rectangle(
      Point, 
      e.Bounds.Size)) 
    ' draw content 
    e.Graphics.DrawString(
     ComboBox1.Items(e.Index).ToString(), 
     ComboBox1.Font, 
     Brush, 
     Point) 
End Sub 

...

ここにあります結果は私のコード:

owner drawn combobox

関連する問題