选择列表 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"。

所以我的问题是我怎样才能做到这一点?谢谢。

选择列表 C# 中的每个项

您将字符串对象添加到列表框,并希望使用汽车选择将字符串对象强制转换为汽车对象 =(汽车)列表框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;

希望这有帮助...