No.1ベストアンサー
- 回答日時:
オーナードローを使用すれば可能になると思います。
新規フォームにcomboboxとbuttonを追加して実行してみてください。
下記のソースでは、button1のイベントで、combobox1の値をクリアーし、選択されているアイテムのテキストを表示するというものです。
Public Class Form1
Private str As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ComboBox1.DrawMode = DrawMode.OwnerDrawFixed
ComboBox1.Items.Add("aaa")
ComboBox1.Items.Add("bbb")
ComboBox1.Items.Add("ccc")
ComboBox1.SelectedIndex = 0
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If ComboBox1.SelectedIndex <> -1 Then
str = ComboBox1.SelectedItem.ToString
Else
str = Nothing
End If
ComboBox1.Items.Clear()
MessageBox.Show(ComboBox1.SelectedIndex & ComboBox1.SelectedItem)
End Sub
'項目を描画する
Private Sub ComboBox1_DrawItem(ByVal sender As 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
txt = str
End If
'使用するフォント
Dim f As New Font(txt, cmb.Font.Size)
'使用するブラシ
Dim b = New SolidBrush(e.ForeColor)
'文字列を描画する
Dim ym As Single = _
(e.Bounds.Height - e.Graphics.MeasureString(txt, f).Height) / 2
e.Graphics.DrawString(txt, f, b, e.Bounds.X, e.Bounds.Y + ym)
f.Dispose()
b.Dispose()
'フォーカスを示す四角形を描画
e.DrawFocusRectangle()
End Sub
End Class
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ListBoxで改行したい
-
給紙トレイをダイアログを使わ...
-
C#でPictureBoxが二重に表示される
-
ビットマップに描画をしてピク...
-
for文の実行速度を遅くしたいの...
-
C#でPictureBox内での図形移動...
-
VBA(エクセル)で自動的にボタン...
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
実行時エラー 438になった時の...
-
「Columns("A:C")」の列文字を...
-
ユーザーフォームを表示中にシ...
-
エクセルエラー13型が一致しま...
-
パソコンへの「Dropbox...
-
シグナル 6(SIGABRT)とは?
-
実行時エラー 3265「要求された...
-
エクセル・VBA CheckBoxのオブ...
-
eclipseのデバッグ中に変数の値...
-
エクセル VBAで複数セル選択時...
-
なぜこんな初歩的なVBAのIf文で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
PowerPoint の VBA
-
給紙トレイをダイアログを使わ...
-
VB.NETでグラフィックを描くと...
-
ビットマップに描画をしてピク...
-
win32api複数のタイマーを同時...
-
Excel VBA:コントロールボタン...
-
画面に絵を出す方法
-
c言語 ちらつき
-
VC++ ドラッグしながらの図の...
-
Word 描画オブジェクトを削除...
-
N88BASICでシューティングゲー...
-
scilabでのグラフ描画時の軸設定
-
vb6のTEXTBOX
-
C#で壁の当たり判定と自キャラ...
-
図の削除直後の再描画
-
ボタンの更新速度について
-
C#(.net) ドロー系ソフト作成 ...
-
PictureBoxのダブルバッファリ...
おすすめ情報