我用:
variablename = listbox.text
在listBox_SelectedIndexChanged
事件中,这有效。
当我使用button_click
事件时,我使用:
variablename = listbox.selectedindex
但这在listbox_selectedindexchanged
事件中不起作用。
如果可以像我上面那样使用它,或者如果我遇到问题以及为什么你不能使用selectedindex方法,请你告诉我。
谢谢!
答案 0 :(得分:4)
一个。听起来你的变量是一个字符串,但是你试图将SelectedIndex属性返回的值赋给它,这是一个整数。
B中。如果您尝试检索与列表框的SelectedINdex关联的项的值,请使用索引返回对象本身(列表框是对象列表,通常但不总是将其作为字符串)。
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
'THIS retrieves the Object referenced by the SelectedIndex Property (Note that you can populate
'the list with types other than String, so it is not a guarantee that you will get a string
'return when using someone else's code!):
SelectedName = ListBox1.Items(ListBox1.SelectedIndex).ToString
MsgBox(SelectedName)
End Sub
使用SelectedItem属性更直接:
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
'This returns the SelectedItem more directly, by using the SelectedItem Property
'in the event handler for SelectedIndexChanged:
SelectedName = ListBox1.SelectedItem.ToString
MsgBox(SelectedName)
End Sub
答案 1 :(得分:2)
这取决于您希望从列表框的所选项目中获得什么。
有几种可能的方法,让我试着为你的作业解释一些。
假设您有一个包含两列的数据表及其行......
ID Title
_________________________
1 First item's title
2 Second item's title
3 Third item's title
然后将此数据表绑定到列表框中,
ListBox1.DisplayMember = "ID";
ListBox1.ValueMember = "Title";
如果用户从列表框中选择第二项。
现在,如果您想获取所选项目的显示值(标题),则可以执行
string displayValue = ListBox1.Text; // displayValue = Second item's title
或者甚至可以得到相同的结果。
// displayValue = Second item's title
string displayValue = ListBox1.SelectedItem.ToString();
要获取所选项目的值成员,您需要执行
string selectedValue = ListBox1.SelectedValue; // selectedValue = 2
现在有些情况下您希望允许用户从列表框中选择多个项目,因此您可以设置
ListBox1.SelectionMode = SelectionMode.MultiSimple;
OR
ListBox1.SelectionMode = SelectionMode.MultiExtended;
现在假设用户选择了两个项目;第二和第三。
因此,只需遍历SelectedItems
string displayValues = string.Empty;
foreach (object selection in ListBox1.SelectedItems)
{
displayValues += selection.ToString() + ",";
}
// so displayValues = Second item's title, Third item's title,
如果你想获得ID's
而不是Title's
那么......
我也正在浏览它,如果找到我会发布。
我希望你的理解能够建立。
祝你好运!