2015-07-21 61 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

我和我的應用程序並沒有那麼遠。但我也想感謝你的支持者,因爲現在我的總體應用已經完成了。爲此歡呼! –