public void Start() { if (Timer != null) { return; } Timer = new Timer(state => { var res = Message.Invoke(CurrentTime); if (OldMessage != null && res?.Length < OldMessage?.Length) { ConsoleUtilities.ClearLine(Line, StartAt, OldMessage.Length); } ConsoleUtilities.SetTemporaryConsolePosition(() => Console.Write(res), Line, StartAt); CurrentTime--; OldMessage = res; if (CurrentTime < 0) { Stop(); } }, null, TimeSpan.Zero, TimeSpan.FromSeconds(1)); }
public DateTime Draw() { while (true) { Console.WriteLine($"{Question} ({Parameters.Format})" + (Parameters.DefaultDate != null ? $" [{Parameters.DefaultDate.Value.ToString(Parameters.Format)}]" : string.Empty)); var input = Console.ReadLine(); if (DateTime.TryParseExact(input, Parameters.Format, null, DateTimeStyles.None, out var dateTime)) { if (Parameters.CustomValidation != null) { var validationResult = Parameters.CustomValidation.Invoke(dateTime); if (validationResult.IsSuccess) { return(dateTime); } Console.WriteLine(validationResult.ErrorMessage); } else { return(dateTime); } } else { if (Parameters.DefaultDate != null) { ConsoleUtilities.SetTemporaryConsolePosition(() => { Console.WriteLine(Parameters.DefaultValueMessage, Parameters.DefaultDate.Value.ToString(Parameters.Format)); }, Console.CursorTop - 1, 0); return(Parameters.DefaultDate.Value); } if (!string.IsNullOrEmpty(Parameters.ErrorMessageFormat)) { Console.WriteLine(Parameters.ErrorMessageFormat, input, Parameters.Format); } } } }
public void Write(string message, int topOffset = 0) { ConsoleUtilities.SetTemporaryConsolePosition(() => Console.Write(message), Top + topOffset, Left); }