- ベストアンサー
ComboBoxの表示について
VB入門者ですがよろしくお願いします。 2005を使用しているのですが、 ComboBoxのtextの内容を中央に表示したいのですが、 どうしたらよいのでしょうか? (TextBoxの.TextAlignのようなもの) 教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
プロパティの設定だけでは実現できません。 ComboBoxのDrawModeプロパティをOwnerDrawFixedまたは、OwnerDrawVariableに設定して、 ComboBoxのDrawItemイベント内で描画の処理を行ってやります。 Private Sub ComboBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem Dim cmb As ComboBox = CType(sender, ComboBox) Dim txt As String = cmb.Items(e.Index).ToString Dim sf As SizeF = e.Graphics.MeasureString(txt, e.Font) Dim rf As RectangleF With rf .X = (e.Bounds.Width - CInt(sf.Width)) \ 2 .Y = e.Bounds.Y .Width = e.Bounds.Width .Height = e.Bounds.Height End With e.DrawBackground() e.Graphics.DrawString(txt, e.Font, Brushes.Black, rf) e.DrawFocusRectangle() End Sub このような感じ・・・ フォントの色などは手抜きなので・・・ (注意!表示の関係上、ソースのスペースは全角にしています)
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
Additems するアイテム文字列について、 所定の長さのスペース文字列を用意し、 (所定の長さー当アイテム文字列長さ)/2を整数化した位置から 当文字列を貼り付た文字列を アイテムとして設定してはどうでしょう。
お礼
ありがとうございました。
お礼
早速のご回答ありがとうございました。 すみません。vb入門者なので・・・ うまく動作しませんでした。 ComboBoxのDrawModeプロパティをOwnerDrawFixedに設定して、 以下のプログラムをそのままコピーしたのですが、 それではダメなのでしょうか? drawitemはいつ、発生するイベントなのですか? よろしければ、教えてください。