VisualBasic2005を使っています。


ComboBoxに画像を表示したいと考えていますが、ぜんぜんわかりません。

マイクロソフトに参考になりそうなものがあったのですが、
VisualBasic2005で参照しようとすると変換され、動作はしますが
そもそもツールボックス内にコントロールが表示されません。

http://msdn.microsoft.com/ja-jp/library/cc440873.aspx

おそらくVB.NETとの何らかの違いなのでしょうが、
少し自力で解決するには難しいのでわかる方がいればご助言お願いします。

できるだけ具体的なコードで示していただけると助かります。

よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/01/31 21:45:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:tsukasa57 No.1

回答回数110ベストアンサー獲得回数20

ポイント35pt

こんにちは。

試してみました。VB2005 さんのおっしゃるとおり、VisualBasic 2005 では

http://msdn.microsoft.com/ja-jp/library/cc440873.aspx で示されている DLL はツールボックスに表示できませんでした。しかし VisualBasic 2005 ように変換すれば上記リンクの通りに使用できます。

次の手順で作業して下さい。

  1. ImageComboBoxControl の sln ファイルを VisualBasic 2005 で開きます。すると変換ウィザードが表示されますのでウィザードを実行して下さい。
  2. 変換ウィザードが終了するとビルド出来るようになるのでビルドして下さい。ビルドが終わると ImageComboBoxControl.dll が出来ている(日時が変わっている)はずなので確認して下さい。
  3. VisualBasic 2005 で ImageComboBoxControl のプロジェクトを閉じて新しいプロジェクトを開きます。
  4. [ツールボックス]-[全般タブ]を選んで右クリックを押して[アイテムの選択]を選びます。ダイアログが表示されますから[参照]ボタンを押して先ほどビルドした ImageComboBoxControl.dll を選択します。すると [ツールボックス]-[全般タブ] に[ComboImage]ボタンが追加されます。

あとは http://msdn.microsoft.com/ja-jp/library/cc440873.aspx のチュートリアルの通りです。試してみて下さい。

id:kokoro77 No.2

回答回数18ベストアンサー獲得回数0

ポイント35pt

そのURLを参考にしていますが


1.VB2005を起動しフォームにコンボボックスを貼り付けます。

2.貼り付けたコンボボックスを選択し、プロパティのDrawModeをOwnerDrawFixedに変更します。

3.イメージリストを追加します。

4.イメージリストのプロパティのImagesに画像を追加します。

5.Formのロードイベントにコンボボックスの内容を設定します。


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ComboBox1.Items.Add("1行目")
        ComboBox1.Items.Add("2行目")
        ComboBox1.Items.Add("3行目")
    End Sub<BR>

5.コンボボックスのイベントからDrawItemを選択し、以下のコードを記述します。


    Private Sub ComboBox1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem
        e.DrawBackground()
        e.DrawFocusRectangle()
        Dim bounds As New Rectangle
        bounds = e.Bounds
        Dim s As String = ComboBox1.Items(e.Index)
        Try
            If (ImageList1.Images.Count <> 0) Then
                ImageList1.Draw(e.Graphics, bounds.Left, bounds.Top, e.Index)
                e.Graphics.DrawString(s, e.Font, New SolidBrush(e.ForeColor), bounds.Left + ImageList1.Images(e.Index).Width, bounds.Top)
            Else
                e.Graphics.DrawString(s, e.Font, New SolidBrush(e.ForeColor), bounds.Left, bounds.Top)
            End If
        Catch ex As Exception
            e.Graphics.DrawString(s, e.Font, New SolidBrush(e.ForeColor), bounds.Left, bounds.Top)
        End Try
    End Sub


これで実行すれば画像表示されます。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません