using System;
using System.IO;
using System.Collections;
namespace LectorTexto
{
class Program
{
static ArrayList lista = new ArrayList();
static bool fin;
static int lineaDesde = 0, lineaHasta = 21;
static void Main(string[] args)
{
Console.Write("Introduce nombre archivo: ");
string nombreArchivo = Console.ReadLine();
LeerFichero(nombreArchivo);
do
{
MostrarMenu();
EscribirLineas(lineaDesde, lineaHasta);
LeerTecla();
}
while (!fin);
}
static void LeerTecla()
{
ConsoleKeyInfo cki;
cki = Console.ReadKey();
if (cki.Key == ConsoleKey.Escape)
{
fin = true;
}
else if (cki.Key == ConsoleKey.UpArrow)
{
if (lineaDesde > 0)
{
lineaDesde--;
lineaHasta--;
}
}
else if (cki.Key == ConsoleKey.DownArrow)
{
if (lineaHasta < lista.Count)
{
lineaDesde++;
lineaHasta++;
}
}
else if (cki.Key == ConsoleKey.PageUp)
{
if ((lineaHasta + 21) < lista.Count)
{
lineaDesde += 21;
lineaHasta += 21;
}
else
{
lineaDesde += lista.Count - lineaHasta;
lineaHasta += lista.Count - lineaHasta;
}
}
else if (cki.Key == ConsoleKey.PageDown)
{
if ((lineaDesde - 21) > 0)
{
lineaDesde -= 21;
lineaHasta -= 21;
}
else
{
lineaHasta = lineaDesde + (21 - lineaDesde);
lineaDesde = 0;
}
}
}
static void EscribirLineas(int desde, int hasta)
{
for (int i = desde; i < hasta; i++)
{
Console.WriteLine(lista[i]);
}
}
static void MostrarMenu()
{
Console.Clear();
Console.BackgroundColor = ConsoleColor.Cyan;
Console.ForegroundColor = ConsoleColor.Black;
Console.WriteLine(" ==> Lector .txt --- Version 1.0");
Console.SetCursorPosition(0, 23);
Console.BackgroundColor = ConsoleColor.Cyan;
Console.ForegroundColor = ConsoleColor.Black;
Console.WriteLine("Pulse ESC para salir, fecha arriba y abajo para mover");
Console.SetCursorPosition(0, 1);
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.White;
}
static void LeerFichero(string nombreArchivo)
{
if (!File.Exists(nombreArchivo))
{
Console.WriteLine("El fichero de texto no existe");
}
else
{
try
{
StreamReader archivoTexto = File.OpenText(nombreArchivo);
string line;
do
{
line = archivoTexto.ReadLine();
if (line != null)
lista.Add(line);
}
while (line != null);
archivoTexto.Close();
}
catch (Exception e)
{
Console.WriteLine("Error, " + e.Message);
}
}
}
}
}