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で質問しましょう!
似たような質問が見つかりました
- UNIX・Linux mxlinux 起動時エラーについて 1 2023/01/28 23:05
- UNIX・Linux Ubuntu22.04、nanoエディタの使い方について 2 2022/10/24 19:50
- その他(ブラウザ) Mycrosoft Edge の「コレクション」に、画像とテキストを追加したい 2 2022/05/28 11:10
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- PDF PDFの出力時のファイル名を消したい 3 2022/09/05 01:16
- 画像編集・動画編集・音楽編集 AfterEffectでのシャターの挙動がおかしい 1 2023/05/07 00:38
- フリーソフト libreoffice drawのツールバーのチェックが外れてしまう 1 2022/10/04 22:02
- その他(ブラウザ) zoomのバーチャル背景が選べない 4 2022/12/08 12:38
- デスクトップパソコン https://s.kakaku.com/item/K0001022834/#tab02 富士通のこ 1 2022/05/25 03:29
- Gmail OCNメールの自動転送につて 1 2022/04/21 16:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
win32api複数のタイマーを同時...
-
scilabでのグラフ描画時の軸設定
-
C#で壁の当たり判定と自キャラ...
-
ビットマップに描画をしてピク...
-
給紙トレイをダイアログを使わ...
-
C#を用いて描画する四角形の角...
-
画面に絵を出す方法
-
ListBoxで改行したい
-
VB2010にて、プロットエリア...
-
線の描画速度
-
ポリゴン 球体を三角形パッチ...
-
VC++2010 MFC EDIT に格子
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
ユーザーフォームを表示中にシ...
-
【C#/Java?】try-catchでcatch...
-
エクセルエラー13型が一致しま...
-
ExcelVBAのユーザーフォームの...
-
「Columns("A:C")」の列文字を...
-
VBA(エクセル)で自動的にボタン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
Word 描画オブジェクトを削除...
-
C#を用いて描画する四角形の角...
-
ビットマップに描画をしてピク...
-
PowerPoint の VBA
-
給紙トレイをダイアログを使わ...
-
win32api複数のタイマーを同時...
-
画面に絵を出す方法
-
MFCでのコンボボックスについて
-
.NETのPictureBoxでウインドウ...
-
scilabでのグラフ描画時の軸設定
-
Excel VBA:コントロールボタン...
-
VC;;6.0のMFCで線を簡単に引け...
-
花火のアルゴリズム
-
VB.NETでグラフィックを描くと...
-
水平線の描画
-
Excel 2007で、フリーフォーム描画
-
C# DrawImage 物理サイズでな...
-
円の頂点の求め方を知りたいです。
おすすめ情報