Список элементов массива на одной или нескольких страницах и ожидание ввода пользователем каждой страницы - PullRequest
0 голосов
/ 16 января 2019

Я пытался добиться эффекта следующей страницы в консоли C #, когда писал все содержимое массивов. Ну, это работает без проблем, однако, для того, чтобы заставить это работать, я использовал исключения (которыми я действительно не горжусь). Я ищу способ сделать это без исключений.

using операторов (я не знаю, какие из них я использовал для этого кода):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.IO;
using System.Threading;
using System.Text.RegularExpressions;

Эта часть в основном предназначена для получения имен некоторых файлов из папки. Это только для дополнительной информации и может быть пропущено:

string scLoc = AppDomain.CurrentDomain.BaseDirectory + @"shortcuts";
string[] directory = Directory.GetFiles(scLoc);

foreach (var filed in directory)
{
    System.IO.File.Move(filed, filed.ToLowerInvariant());
}

string[] file = Directory.GetFiles(scLoc).Select(System.IO.Path.GetFileNameWithoutExtension).ToArray();

foreach (string dir in directory)
{
}

Это проблемная часть:

List<string> prgList = new List<string>();
foreach (string fdir in file)
{
    prgList.Add(fdir);
}
string[] prgListArr = prgList.ToArray();
UInt16 fileAmoutToReach = 0;
UInt16 prgName = 0;
while (fileAmoutToReach <= file.Length) //gotta fix this
{
    try
    {
        for (UInt16 i = Convert.ToUInt16(Console.CursorTop); i < Convert.ToUInt16(Console.WindowHeight - 1); i = Convert.ToUInt16(Console.CursorTop))
        {
            Console.WriteLine(prgListArr[prgName]);
            prgName++;
            fileAmoutToReach++;
        }
    }
    catch (Exception)
    {
        Console.Write("Press any key to continue");
        inputedKey = Console.ReadKey(true);
        break;
    }
    Console.Write("Press any key to resume the listing");
    inputedKey = Console.ReadKey(true);
    if (inputedKey.Key == ConsoleKey.Escape)
    {
        break;
    }
    Console.Clear();
}
...