选择列表中的每个项目c#

时间:2014-11-28 05:38:59

标签: c# list loops listbox

所以基本上我有两个班,汽车和秘密汽车。

class Cars
{
    public string First;
    public string Last;
    public string Number;

    public Cars(string first, string last , string number)
    {
        First = first;
        Last = last;
        Number = number;        
    }

    public Cars()
    {

    }


    public override string ToString()
    {
     return this.First + ", " + this.Last + ", " +  this.Number;
    }

}


class SecretCars : Contact
{
    public SecretCars (string first, string last , string number) : base(first, last , number)
    {
        First = first;
        Last = last;
        Number = number;
    }

    public SecretCars() : base()
    {}

    public override string ToString()
    {
 return this.First + ", " + this.Last + ", " + "Secret cars";
    }
}

在Form1.cs中我有一个listbox1,一个textBox1,一个button1和另外三个textBoxs(textbox2,textbox3,textbox4)。

无论你在listBox1中打印的textBox1打印什么,我接下来要做的是在我剩下的三个文本框中打印我拥有的三个变量(First,Last,Number)(textbox2,textbox3,textbox4),每一个价值。

我应该使用以下代码:

Cars selectCar =(Cars)listBox1.SelectedItem;

textBox2.Text = selectCar.First;
textBox3.Text = selectCar.Last;
textBox4.Text = selectCar.Number;

选择项目时我会收到此错误

未处理的类型' System.InvalidCastException'发生在WindowsFormsApplication1.exe

附加信息:无法转换类型为' System.String'的对象输入' WindowsFormsApplication1.Contact'。

所以我的问题是如何才能完成这项工作? 谢谢。

3 个答案:

答案 0 :(得分:1)

您将字符串对象添加到列表框,并希望使用Cars selectCar =(Cars)listBox1.SelectedItem将字符串对象强制转换为Cars对象;因此抛出System.InvalidCastException,可能需要将Cars对象添加到列表框

答案 1 :(得分:1)

假设您在textBox1中输入汽车名称,然后将其添加到`listBox1'这没有任何问题。

现在你要做的是从listBox1获取项目并将其转换为(Cars)的对象。如果你还记得,你没有添加Cars类的对象,只是从textBox1中取出的字符串。您应该将字符串添加到类Cars的属性中,然后在Cars中添加listBox1的对象。

我只是给你一个如何做到这一点的例子。

Cars car = new Cars()
{
     Name=textBox1.Text,
     Last="some text",
     Number="some text"
}

listBox1.Items.Add(car);
listBox1.DataMember = "Name";


Cars selectCar =(Cars)listBox1.SelectedItem;

textBox2.Text = selectCar.First;
textBox3.Text = selectCar.Last;
textBox4.Text = selectCar.Number;

答案 2 :(得分:0)

例如,如果您在textBox1中输入文本TN-12-1234,则可以将其拆分并将其添加到列表框中,例如

string[] carStr = textBox1.Text.Split('-');
Cars selectedCar = new Cars() { First = carStr[0], Last = carStr[1], Number = carStr[2] };
listBox1.Items.Add(selectedCar);

如果您这样做,那么只有您可以将listBox项目类型化为汽车,如

Cars selectCar = (Cars)listBox1.SelectedItem;

textBox2.Text = selectCar.First;
textBox3.Text = selectCar.Last;
textBox4.Text = selectCar.Number;

希望这会有所帮助......