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