2015-07-21 56 views
1

这里我要告诉你我正在处理的内容,之后出现我的问题。我想告诉你们我在做什么...所以你们可以更好地理解我的问题。使用Winforms将对象字符串转换为C#中的对象(类)

在此先感谢,

我正在进行一个项目。这个应用程序是一个杂货店计算器。我有一个叫做Artikel的课。这个类是我的其他派生类的基类,例如(蔬菜,饮料,温食品等)。

我从我的数据库中获得了一个充满数据的组合框。我想要做的是将每个产品的价格添加到“总成本购物车”中。我的基类是这样的:

class Artikel 
{ 
    // properties 
    private string naam; 
    private double prijs; 
    private string winkel; 

    // properties 
    public string Naam 
    { 
     get { return naam; } 
     set { naam = value; } 
    } 

    public double Prijs 
    { 
     get { return prijs; } 
     set { prijs = value; } 
    } 

    public string Winkel 
    { 
     get { return winkel; } 
     set { winkel = value; } 
    } 

    // constructor 
    public Artikel(string naam, double prijs, string winkel) 
    { 
     this.Naam = naam; 
     this.Prijs = prijs; 
     this.Winkel = winkel; 
    } 

    // methods 
    public override string ToString() 
    { 
     string info = "€ " + Prijs; 
     return info; 
    } 

从我的主要形式,我使用此代码,将其添加到我的组合框:

foreach(var g in database.GetGroenteInfo()) 
    { 
     cbGroentenLidl.Items.Add(g.Naam); 
    } 

当ComboBox是充满“蔬菜”的数据,我可以选择项目。从这里我可以用这个代码所选择的项目添加到我的“lbLidlKosten”:

lbLidlKosten.Items.Add(cbGroentenLidl.SelectedItem); 

现在,我的数据是正确的,我想它..这里是问题。现在我想将添加到列表框中的每个产品的价格添加到我的标签。基本上,我添加到“lbLidlKosten”的产品越多,我的成本在label.text中的增长就越多。我希望你明白我的意思。

我尝试以下,以获得一个工作:

artikelList = database.GetGroenteInfo(); 

    //foreach (Artikel a in artikelList) 
    //{ 
    // label2.Text = Convert.ToString(a.Prijs); 
    // label2.Text = cbGroentenLidl.SelectedItem; 
    //} 

    //foreach (Artikel a in lbLidlKosten.Items) 
    //{ 
    // label2.Text = a.Prijs.ToString(); 
    //} 

    //Artikel artikel = (Artikel)cbGroentenLidl.SelectedItem; 
    //label2.Text = artikel.Prijs.ToString(); 

    foreach (Artikel a in lbLidlKosten.Items) 
    { 
     label2.Text = Convert.ToString(a.Prijs); 
    } 

所有这些解决方案将无法正常工作。因为我收到错误: “无法将对象字符串转换为对象Artikel”。

有没有人有线索?这可能很简单..但我找不到它,并在最后3天内卡住了。

随着亲切的问候

+0

也许它可以工作。但这一切都失败的地方是不成熟的。当它试图循环在每个artikel在我的列表或组合框中的每个artikel ..我得到的错误“无法将对象字符串转换为对象Artikel(类) –

回答

3

在这里:

foreach(var g in database.GetGroenteInfo()) 
{ 
    cbGroentenLidl.Items.Add(g.Naam); 
} 

要添加的名称到组合框,而不是项目本身。 也许你可以试试项集合结合到组合框的数据源,比如:

cbGroentenLidl.DataSource = database.GetGroenteInfo().ToList(); 
cbGroentenLidl.DisplayMember = "Naam"; 

然后,当您添加到列表框,你将有对象,而不仅仅是名字。

+1

嘿!这正是我正在寻找。对象到组合框。非常感谢。我将你的游戏者标记为正确的游戏者。欢呼声 –

1

你也没有递增价值。你可以试试这个:

double prijs = 0; 
foreach (Artikel a in lbLidlKosten.Items) 
{ 
    prijs += a.Prijs; 
} 
label2.Text = Convert.ToString(prijis); 

如果最后一行不起作用,试试这个:

label2.Text = "" + prijs; 
+1

我和我的应用程序并没有那么远。但我也想感谢你的支持者,因为现在我的总体应用已经完成了。为此欢呼! –