VB.NET组合框和图片框

时间:2018-10-07 13:32:10

标签: vb.net combobox picturebox

如果有人可以帮助我,我将不胜感激。提前致谢, 我有一个组合框,其值绑定在数据库中,在数据库中,我想根据下一个/上一个组合框的值将图片移动到下一个/上一个记录时,该图片框显示存储在资源中的图片。

当我使用鼠标组合框值更改时,图片会更改,但是当我在记录之间移动时,图片不会更改。我在那里想念什么?

  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

1 个答案:

答案 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

通过将StringImage传递到Tuple.Create,您将获得Tuple(Of String, Image)。元组具有指定类型的属性,并命名为Item1Item2等。在这种情况下,Item1将返回String值,而Item2将返回{{ 1}}。绑定后,您可以通过Image属性访问选定的Image,例如

SelectedValue