2017-02-11 123 views
0

我正在做一個GUI作爲客戶端的WCF服務,但是我添加了當前項目的打印列表有問題。我有一個代碼,以新的條目添加到列表:C#打印列表問題

public bool Add_Data(Data sample) 
    { 
     container.Add(sample); 
     Console.WriteLine("New record added!"); 
     return true; 
    } 

,它的工作,但是當我試圖查看添加的記錄與第一次嘗試它的工作原理,但是如果我想查看一遍列表添加相同的元素。爲了向你展示它是如何工作的:

  1. 我添加新條目和我「打印」的文章: IMAGE CLICK [工作應該如何]
  2. 不過,我想再次看到它,所以我迫切同樣的按鈕在我的形式,這裏是發生了什麼:IMAGE CLICK正如你所看到的,我們有我們的列表+額外的相同記錄,如果我再次按下按鈕,我將有3個相同的記錄。

這裏是我的「節目記錄」代碼:

public string Show_Data() 
    { 
     Console.WriteLine("Printing records"); 
     foreach (Data record in container) 
     { 
      string final_result = ("\nID: "+ + record.ID + " " + "product: " + record.product + " " + "category: " + record.category + " " + "price: " + record.price + " " + "quantity: " + record.quantity + " " + "\n "); 
      result += final_result; 
     } 
     return result;     
    } 

讓我知道,如果你知道如何解決它。

+0

相關的代碼是你如何調用Show_Data(),而不是發佈。 –

回答

0

您需要查看變量範圍。您在Show_Data()方法之外聲明結果。每次調用該方法時,都會執行result += final_result;,這會增加結果。嘗試下面的代碼,你會得到不同的結果。

public string Show_Data() 
{ 
    Console.WriteLine("Printing records"); 
    var output = string.Empty; 
    foreach (Data record in container) 
    { 
     string final_result = ("\nID: "+ + record.ID + " " + "product: " + record.product + " " + "category: " + record.category + " " + "price: " + record.price + " " + "quantity: " + record.quantity + " " + "\n "); 
     output += final_result; 
    } 
    return output;     
} 

此外,我會考慮使用字符串生成器和字符串格式。

public string Show_Data() 
{ 
    Console.WriteLine("Printing records"); 
    var output = new StringBuilder(); 
    foreach (Data record in container) 
    { 
     string final_result = string.Format("ID: {0} product: {1} category: {2} price: {3} quantity: {4}", record.ID, record.product, record.category, record.price, record.quantity); 

     // if using C# 6 
     // string final_result = string.Format($"ID: {record.ID} product: {record.product} category: {record.category} price: {record.price} quantity: {record.quantity)}"; 
     output.AppendLine(final_result); 
    } 
    return output.ToString();     
} 
+0

謝謝! :)它的工作原理,我現在明白了:) – jeceko

+0

不用擔心,很高興我能幫上忙。 –