选择列表 C# 中的每个项
本文关键字:列表 选择 | 更新日期: 2023-09-27 18:32:15
所以基本上我有两个类,Cars和SecretCars。
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我得到了一个列表框 1、一个文本框 1、一个按钮 1 和另外三个文本框(文本框 2、文本框 3、文本框 4)。
无论您在 textBox1 中键入什么,都会在 listBox1 中打印,我接下来要做的是在我剩下的三个文本框(文本框 2、文本框 3、文本框 4)中打印我拥有的三个变量(第一个、最后一个、数字),每个值。
我应该使用以下代码:
Cars selectCar =(Cars)listBox1.SelectedItem;
textBox2.Text = selectCar.First;
textBox3.Text = selectCar.Last;
textBox4.Text = selectCar.Number;
选择项目时,我会收到此错误
WindowsFormsApplication1 中发生了类型为"System.InvalidCastException"的未处理异常.exe
其他信息:无法将类型为"System.String"的对象强制转换为类型"WindowsFormsApplication1.Contact"。
所以我的问题是我怎样才能做到这一点?谢谢。
您将字符串对象添加到列表框,并希望使用汽车选择将字符串对象强制转换为汽车对象 =(汽车)列表框1.选定项;所以抛出System.InvalidCastException,也许你需要将Cars对象添加到列表框中
假设您在textBox1
中输入汽车名称并将其添加到"listBox1"中,这没有任何问题。
现在您要做的是从ListBox1中获取项目并将其转换为(Cars)
的对象。如果您还记得,您没有添加Cars
类的对象,而只是从 textBox1
中获取的字符串。您应该将字符串添加到类Cars
的属性中,然后在listBox1
中添加 Cars
的对象。
我只是给你一个例子,说明你如何做到这一点。
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;
例如,如果您在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;
希望这有帮助...