所以基本上我有两个班,汽车和秘密汽车。
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'。
所以我的问题是如何才能完成这项工作? 谢谢。
答案 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;
希望这会有所帮助......