2012-12-11 24 views
1

我目前正在使用在程序開始時加載的項目列表。我試圖確定每個項目的位置。所以我有按鈕First它顯示第一個項目(當前),Next其中第一個(Current.Next)後顯示以下項目,Last應該顯示最後一個itme,但它根本不顯示任何內容。在按鈕點擊名爲labelSpecificTree的標籤後,顯示結果。我試圖在Last按鈕點擊線Current = Trees.Last;中設置一箇中斷來查看結果,但沒有給我任何具體的細節。我如何通過標籤顯示列表中的最後一項?在列表中查找項目的位置 - 首先,最後一個

代碼

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 


     ListOfTrees Trees = new ListOfTrees(); 
     FruitTrees Tree; 
     FruitTrees Current; 

     double Total; 



     public class ListOfTrees 
     { 
      private int size; 

      public ListOfTrees() 
      { 
       size = 0; 
      } 

      public int Count 
      { 
       get { return size; } 
      } 

      public FruitTrees First; 
      public FruitTrees Last; 

      public int Add_Initialize(FruitTrees NewItem) 
      { 
       NewItem.Next = First; 
       First = NewItem; 
       Last = First.Next; 

       if (Last == null) 
       { 
        Last = First; 
       } 

       return size++; 
      } 

      public int Add(FruitTrees newItem) 
      { 
       if (First == null) 
        return Add_Initialize(newItem); 

       FruitTrees item = First; 
       while (item.Next != null) 
       { 
        item = item.Next; 
       } 

       item.Next = newItem; 
       return size++; 
      } 



     } 




     public void Clear() 
     { 
      textBoxType.Clear(); 
      textBoxHeight.Clear(); 
      textBoxPrice.Clear(); 
      textBoxStock.Clear(); 
     } 


     public void Current_Tree() 
     { 
      Current = Trees.First; 
      labelSpecificTree.Text = Current.Type.ToString(); 
     } 


     private void Form1_Load_1(object sender, EventArgs e) 
     { 

      Tree = new FruitTrees(); 
      Tree.Stock = 15; 
      Tree.Type = "Pear"; 
      Tree.Price = 49.99; 
      Tree.Height = 20; 
      Total += Tree.Price * Tree.Stock; 
      Trees.Add(Tree); 

      ShowTrees(); 
      Current_Tree(); 
     } 


     private void buttonLast_Click(object sender, EventArgs e) 
     { 
      Current = Trees.Last; 
      labelSpecificTree.Text = Current.Type.ToString(); 
     } 
    } 
} 
+3

你已經錯過了一些代碼... – JleruOHeP

+0

只是要清楚,你會發現有一個內置的LinkedList的''類型,對不對?這有點重新發明輪子。 – itsme86

+0

@JleruOHeP對不起,我添加了其餘必要的代碼。 – techAddict82

回答

2

在你的代碼,當你添加添加新的項目,你不動最後。試試這個:

public int Add(FruitTrees newItem) 
{ 
    if (First == null) 
    return Add_Initialize(newItem); 

    FruitTrees item = First; 
    while (item.Next != null) 
    { 
     item = item.Next; 
    } 

    item.Next = newItem; 
    Last = newItem; 
    return size++; 
} 
+0

這是完美的。 – techAddict82

1

你不是在你的ListOfTrees.Add()方法設置最後。

嘗試的return size++;語句前加上這一權利:

Last = newItem; 
相關問題