Przemieszczanie się po katalogach w konsoli

0

Witam :)
Podczas pisania swojego programu natrafiłem na pewien problem.
Otóż chciałbym aby pod wpływem kliknięcia strzałki dół/góra zmieniał się kolor danego katalogu a ściślej - danej wyświetlonej nazwy katalogu.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Testy_jednostkowe
{
    class Program
    {
        static void Main()
        {
            DirectoryInfo dir = new DirectoryInfo(@"D:\Dokumenty\Moja Muzyka");
            DirectoryInfo[] diar = dir.GetDirectories();
            int licznik = 0;
            int por = 0;
            ConsoleKeyInfo k1;
            bool exit = false;

            do
            {
                Console.Clear();
                foreach (DirectoryInfo d in diar)
                {
                    Console.Write("[ " + licznik + " ] ");

                    licznik++;
                    if (por==licznik)
                        Console.ForegroundColor = ConsoleColor.Red;
                    else
                        Console.ForegroundColor = ConsoleColor.White;
                    Console.WriteLine(d.Name);
                }

                k1 = Console.ReadKey();

                switch (k1.Key)
                {
                    case ConsoleKey.DownArrow:
                        por = 1;
                        break;
                    case ConsoleKey.UpArrow:
                        por = 0;
                        break;
                }
            } while (exit != true);
            
              

            Console.ReadKey();

        }
    }
}
 

Tak to wygląda.
Niestety jedyne co udało mi się osiągnąć to nagminne zmienianie się licznika w [ ].
:)
Udało mi się takie coś osiągnąć jedynie na zwykłych stringach ale nie o to mi tutaj chodzi....
Pomoże ktoś?

0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace Testy_jednostkowe
{
    class Program
    {
        static void Main()
        {
            DirectoryInfo dir = new DirectoryInfo(@"D:\\");
            DirectoryInfo[] diar = dir.GetDirectories();
            int licznik = 0;
            int por = 0;
            ConsoleKeyInfo k1;
            bool exit = false;
 
            do
            {
            	licznik = 0;
                Console.Clear();
                Console.Write("[ " + licznik + " ] ");
                Console.WriteLine("Por:{0}",por);
                foreach (DirectoryInfo d in diar)
                {
                    
 
                    
                    if (por==licznik)
                        Console.ForegroundColor = ConsoleColor.Red;
                    else
                        Console.ForegroundColor = ConsoleColor.White;
                    Console.WriteLine(d.Name);
                    licznik++;
                }
                
 
                k1 = Console.ReadKey();
 
                switch (k1.Key)
                {
                    case ConsoleKey.DownArrow:
                        por--;
                        break;
                    case ConsoleKey.UpArrow:
                        por++;;
                        break;
                }
            } while (exit != true);
 
 
 
            Console.ReadKey();
 
        }
    }
} 

Licznik zeruj co przebieg pętli a iteruj w foreachu. Tak jak miałeś to licznik uciekał ci i zmienną "por" nigdy byś go nie dogonił.

0

@ace4ur - dzięki wielkie ;)
Jesteś wielki :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1