如果有人可以帮助我,我将不胜感激。提前致谢, 我有一个组合框,其值绑定在数据库中,在数据库中,我想根据下一个/上一个组合框的值将图片移动到下一个/上一个记录时,该图片框显示存储在资源中的图片。
当我使用鼠标组合框值更改时,图片会更改,但是当我在记录之间移动时,图片不会更改。我在那里想念什么?
Private Sub TypeComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TypeComboBox.SelectedIndexChanged
If TypeComboBox.SelectedItem().ToString() = "1" Then
PictureBox1.Image = My.Resources.image1
End if
If TypeComboBox.SelectedItem().ToString() = "2" Then
PictureBox1.Image = My.Resources.image2
End if
End Sub
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
'detect left arrow key
If keyData = Keys.Left Then
If Me.ToolsBindingSource.Position = 0 Then
Me.ToolsBindingSource.MoveLast()
Return True
Else
Me.ToolsBindingSource.MovePrevious()
Return True
End If
End If
'detect right arrow key
If keyData = Keys.Right Then
If Me.ToolsBindingSource.Position = Me.ToolsBindingSource.Count - 1 Then
Me.ToolsBindingSource.MoveFirst()
Return True
Else
Me.ToolsBindingSource.MoveNext()
Return True
End If
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function
答案 0 :(得分:0)
我建议您创建一个包含Images
的数组。您不应重复访问My.Resources
的相同属性,因为它每次都会创建一个新对象。例如
Private images As Image() = {My.Resources.image1, My.Resources.image2}
然后,您可以简单地将SelectedIndex
中的ComboBox
用作该数组的索引。只要两个列表的顺序相同,ComboBox
中的实际值就无关紧要。例如
PictureBox1.Image = images(TypeComboBox.SelectedIndex)
编辑:另一种选择是创建一个将Images
和文本相关联的列表,将其绑定到ComboBox
,然后使用SelectedValue
,例如
Dim imagesAndText = {Tuple.Create("1", My.Resources.image1),
Tuple.Create("2", My.Resources.image2)}
With TypeComboBox
.DisplayMember = "Item1"
.ValueMember = "Item2"
.DataSource = imagesAndText
End With
通过将String
和Image
传递到Tuple.Create
,您将获得Tuple(Of String, Image)
。元组具有指定类型的属性,并命名为Item1
,Item2
等。在这种情况下,Item1
将返回String
值,而Item2
将返回{{ 1}}。绑定后,您可以通过Image
属性访问选定的Image
,例如
SelectedValue