将图像添加到列表框(visual basic)

时间:2009-11-21 03:43:05

标签: vb.net listbox

我有一组网页托管图片,我需要我的用户才能从每个图像中选择1。我认为列表框可以用于此,但我无法弄清楚添加一个图像。这可能吗?更好的方法吗?我正在使用最新的免费vb。

3 个答案:

答案 0 :(得分:9)

使用Listview control代替,它提供了更好的功能,并且没有烦人的调整大小错误。列表框从VB6天开始。列表视图支持列标题,分组和更多内容。

向表单添加Imagelist控件,以存储图像;将它的ColorDepth属性设置为32位,并将Listview的LargeImagelist属性设置为刚刚添加的imagelist控件(这也可以在代码中完成)。

通过以下代码将图像添加到Imagelist:

ImageList1.Images.Add("imagekey", Image.FromStream(yourimagestream))

通过以下代码将项目添加到Listview:

ListView1.Items.Add("list item title", "imagekey")

“imagekey”是一种告诉Listview使用哪个图像的方法。您还可以使用索引作为图标,但指定不存在的索引将使索引超出范围异常,而不存在的密钥将只使用无图像。

哦,您还希望将Listview Multiselect属性设置为False(如果您只希望它们一次选择一个),并在用户单击/双击时访问SelectedIndexChanged()和ItemActivate()事件项目分别。

答案 1 :(得分:2)

ListBox1.DrawMode设置为DrawMode.OwnerDrawFixedDrawMode.OwnerDrawVariable,然后添加绘制图像的处理程序。

Private Sub listBox1_DrawItem(ByVal sender As System.Object, ByVal e As   System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
Dim img As Image
img = sender.items(e.Index)
e.Graphics.DrawImage(img, targetsize) 
End Sub

您可以将图像添加到列表框项目集合中。

Dim img As Image
img = Image.FromFile("c:\tmp.jpg") ' or whatever
ListBox1.Items.Add(img)
...

答案 2 :(得分:1)

是的,这是可能的:

Dim imgList As New ImageList

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ListView1.View = View.Details
    ListView1.Width = 500

    ListView1.Columns.Add("Gender", 75, HorizontalAlignment.Left)
    ListView1.Columns.Add("Name", 100, HorizontalAlignment.Left)
    ListView1.Columns.Add("Notes", 350, HorizontalAlignment.Left)
    ListView1.AllowColumnReorder = True

    ListView1.Columns(0).DisplayIndex = 1

    imgList.Images.Add("Male", Image.FromFile("C:\Users\Joe\Pictures\Male-Symbol.jpg"))
    imgList.Images.Add("Female", Image.FromFile("C:\Users\Joe\Pictures\Female-Symbol.jpg"))
    ListView1.SmallImageList = imgList
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim index As Integer
    Select Case True
        Case RadioButton1.Checked
            index = 0
        Case RadioButton2.Checked
            index = 1
    End Select

    Dim lvi As New ListViewItem
    lvi.ImageIndex = index
    lvi.SubItems.Add(TextBox1.Text)
    ListView1.Items.Add(lvi)
End Sub