ListBox SelectedItem问题。显示重写的ToString

时间:2016-03-01 01:55:50

标签: c# winforms listbox

我在SelectedItem中尝试获取ListBox时遇到了问题。 Listbox是在我的示例中进一步绑定到列表的数据源。

listBox1.DisplayMember = "StringPosition";
listBox1.ValueMember = "StringPosition";
listBox1.DataSource = MatchList;

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    string curItem = listBox1.SelectedItem.ToString();
    MessageBox.Show(curItem);
}

当我运行程序并在列表中选择一个项目而不是显示MessaseBox的{​​{1}}时,它会在我的自定义类中显示被覆盖的SelectedItem方法。现在,自定义ToString方法只是MSDN示例中的剩余方法,我实际上并不需要它。但是,即使我将其注释掉而不是被覆盖的ToString,它也只会显示ToString这是我的项目命名空间和自定义类。那么我如何解决这个问题,以便我可以在Parser.SectorBodies

中获取所选项目
ListBox

1 个答案:

答案 0 :(得分:1)

你应该这样做。我没有时间来测试它,但SelectedValue应该只是字符串所以不应该有任何需要做ToString()。

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    string curItem = listBox1.SelectedValue.ToString();
    MessageBox.Show(curItem);
}

要显示我尝试过的所有内容,正如其中一条评论所指出的那样。您可以抓取整个对象,将其投射到您的班级。然后,您可以访问对象中的所有内容。希望这有效!

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        SectorBodies curItem = listBox1.SelectedItem as SectorBodies;
        MessageBox.Show(curItem.StringPosition);
    }