我试图创建一个简单的应用程序。它有2个列表框,但两个列表大致相同。所以在我的代码中,我希望能够轻松地在任一列表框上执行相同的代码。
在VB6中,我可以将两个控件命名为相同,为它们分配一个索引,并且这样可行。在VB.net 2008中,似乎不可能。
我理想的是在程序中创建一个变量,我可以将其分配给列表框中的任何一个,然后在其余代码中使用这个新变量来控制附加到它的列表框。
以下是一个例子:
Private Sub lVegetables_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lVegetables.Click
ListToEditor(0, lVegetables.SelectedIndex)
End Sub
Private Sub lFruits_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lFruits.Click
ListToEditor(1, lFruits.SelectedIndex)
End Sub
Private Sub ListToEditor(ByVal iList, ByVal iIndex)
Select Case iList
Case 0
Dim lList As lVegetables
Case 1
Dim lList as lFruits
End Select
tEditor.text = iList.item(iIndex)
End Sub
有没有办法可以使用不同的变量动态引用列表框,还是可以为它们分配索引以使它们具有相同的名称?
答案 0 :(得分:5)
您可以对两个ListBox使用相同的处理程序并强制转发发件人:
Sub ListBox_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lVegetables.Click, lFruits.Click
Dim lb = DirectCast(sender, ListBox)
ListToEditor(lb, lb.SelectedIndex)
End Sub
Private Sub ListToEditor(lb As ListBox, index as Int32)
tEditor.text = lb.Items(index).ToString()
End Sub
整个代码可以简化为:
Sub ListBox_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lVegetables.Click, lFruits.Click
Dim lb = DirectCast(sender, ListBox)
If lb.SelectedIndex >= 0 Then tEditor.Text = lb.SelectedItem.ToString()
End Sub