Mostrar posición del artículo en una lista

Estoy trabajando con una lista de enlaces. Mi constructor toma matrices con elementos en él o agrega un elemento (uno a la vez) a la lista a través deBtnAddTree hacer clic. Por razones experimentales, estoy tratando de encontrar una manera de recuperar la posición de un elemento de la lista. He puesto tres botones que espero que muestren:first, next, last elemento y visualización a través de unalabel. Creé dos funciones para lograr mi necesidad.Retrieve yCurrent_Tree() Pero aquí es donde llego a un callejón sin salida. Soy consciente de mostrar elementos que sonnext Puede que tenga que usar un bucle pero no estoy seguro de cómo hacerlo. ¿Cómo puedo mostrar la posición de un elemento encontrado en la lista?

        public class ListForTrees
        {

        //Retrieve Position of item
            public void Retrieve(int Position)
            {
                int new_position = Position;
                fruit_trees current = first_tree;

                for (int i = 0; i < Position && current != null; i++)
                {
                    current = current.next_tree;
                }
                return current;
            }

        //Show Current Tree
            public void Current_Tree()
            {
                try
                {
                    current = fruit_trees.first_tree;
                    labelSpecificTree.Text = current.Type.ToString();
                }
                catch { };

            }         



        }

        ListForTrees mainlist = new ListForTrees();     

        private void BtnGo_Click(object sender, EventArgs e)
        {
            fruit_trees[] ax = {   new fruit_trees("cherry", 48, 12.95, 3),
                                             new fruit_trees("pine", 36, 9.95, 8),
                                             new fruit_trees("oak", 60, 14.95, 2),
                                             new fruit_trees("peach", 54, 19.95, 3),
                                             new fruit_trees("pear", 36, 11.85, 2),
                                             new fruit_trees("apple", 62, 13.45, 5)
                                         };   
            mainlist = new ListForTrees(ax);
            fruit_trees current = mainlist.first_tree;   

            while (current != null)
            {
                TxtOutput.AppendText(current.ToString() + Environment.NewLine);
                current = current.next_tree;
            }
        }

        private void ShowNextItem_Click(object sender, EventArgs e)
        {
        //Show Next Item
        }

        private void ShowLastItem_Click(object sender, EventArgs e)
        {
        //Show Last Item
        }

        private void ShowFirstItem_Click_1(object sender, EventArgs e)
        {
        // Show First Item
        }


    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta