1

私は現在、プログラムの開始時にロードされたアイテムのリストを操作しています。私は各アイテムの位置を決定しようとしています。したがってFirst、最初の項目(Current)を表示するボタンがあり、最初の項目Next(Current.Next)の後に次の項目Lastが表示されます。これは、最後の項目を表示するはずですが、何も表示されません。ボタンが。というラベルをクリックすると、結果が表示されます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();
        }
    }
}
4

2 に答える 2

2

コードでは、Add で新しい項目を追加するときに Last を移動しません。これを試して:

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++;
}
于 2012-12-11T16:27:13.880 に答える
1

ListOfTrees. Add() メソッドで Last を設定していません。

return size++;ステートメントの直前にこれを追加してみてください:

Last = newItem;
于 2012-12-11T16:27:03.130 に答える