正在从列表框项中检索值
本文关键字:检索 列表 | 更新日期: 2023-09-27 18:26:34
我在获取Listbox项的值时遇到问题。列表框中填充了我创建的自定义类元素。
private void btnSave1_Click(object sender, EventArgs e)
{
ListItem li = new ListItem(
int.Parse(txtId1.Text),
txtName1.Text,
int.Parse(txtMinLevel1.Text),
int.Parse(txtMinAttr11.Text),
int.Parse(txtMinAttr21.Text),
float.Parse(txtDamage1.Text),
float.Parse(txtAdditionalDmg1.Text),
cmbAdditionalDmgType1.SelectedItem.ToString(),
float.Parse(txtRange1.Text),
float.Parse(txtCost1.Text)
);
list1.Add(li);
lstWeapons1.DataSource = null;
lstWeapons1.DataSource = list1;
lstWeapons1.DisplayMember = "name";
lstWeapons1.ValueMember = "id";
}
private void lstWeapons1_SelectedIndexChange(object sender, EventArgs e)
{
var text = lstWeapons1.SelectedItem.ToString();
}
事件发生后,text
值为ListItem,而不是我期望的值
在您的情况下,Listbox的每个元素都是自定义类ListItem
的实例。如果您没有在自定义类中定义ToString()方法的重写,那么在此自定义类上调用ToString(。所以你有这些选择
private void lstWeapons1_SelectedIndexChange(object sender, EventArgs e)
{
if(lstWeapons1.SelectedValue != null)
var text = lstWeapons1.SelectedValue.ToString();
}
或
private void lstWeapons1_SelectedIndexChange(object sender, EventArgs e)
{
if(lstWeapons1.SelectedItem != null)
{
ListItem item = lstWeapons1.SelectedItem as ListItem;
var text = item.id.ToString();
}
}
或
public class ListItem
{
public override string ToString()
{
return this.id.ToString();
}
}
private void lstWeapons1_SelectedIndexChange(object sender, EventArgs e)
{
if(lstWeapons1.SelectedItem != null)
{
var text = lstWeapons1.SelectedItem.ToString();
}
}
请注意,我总是检查SelectedItem或SelectedValue是否为null,因为您不能排除在没有选择项目的情况下调用SelectedIndexChanged的可能性。