【问题标题】:select each item in a list c#选择列表中的每个项目c#
【发布时间】:2014-11-28 05:38:59
【问题描述】:

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

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 和另外三个 textBox(textbox2、textbox3、textbox4)。

无论您在 textBox1 中输入什么内容都会在 listBox1 中打印,接下来我要做的是在我留下的三个文本框(textbox2、textbox3、textbox4)中打印我拥有的三个变量(First、Last、Number),每一个值。

我应该使用以下代码:

Cars selectCar =(Cars)listBox1.SelectedItem;

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

选择项目时出现此错误

WindowsFormsApplication1.exe 中出现“System.InvalidCastException”类型的未处理异常

附加信息:无法将“System.String”类型的对象转换为“WindowsFormsApplication1.Contact”类型。

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

【问题讨论】:

  • 不,它没有用,但是谢谢。
  • 您在使用时遇到了什么错误?

标签: c# list loops listbox


【解决方案1】:

您将字符串对象添加到列表框,并希望使用 Cars 将字符串对象转换为 Cars 对象 selectCar =(Cars)listBox1.SelectedItem;所以抛出 System.InvalidCastException,也许你需要将 Cars 对象添加到列表框

【讨论】:

    【解决方案2】:

    假设您在 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;
    

    【讨论】:

      【解决方案3】:

      例如,如果您在 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,

      Cars selectCar = (Cars)listBox1.SelectedItem;
      
      textBox2.Text = selectCar.First;
      textBox3.Text = selectCar.Last;
      textBox4.Text = selectCar.Number;
      

      希望这会有所帮助...

      【讨论】:

        猜你喜欢
        • 2022-11-07
        • 2012-05-28
        • 2021-11-23
        • 1970-01-01
        • 2016-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多