Создание кнопки в консоли на C#

107
01 января 2021, 11:00

Возможно ли добавить в консольное приложение кнопку? Чтобы пользователь не вводил сообщение сам, а нажимал на слово и получал результат. Своеобразный гипертекст для консоли.

Answer 1

Можно сделать что-то такое:

Console.WriteLine("Choose your destiny:");
int top = Console.CursorTop;
int y = top;
Console.WriteLine("One");
Console.WriteLine("Two");
Console.WriteLine("Three");
int down = Console.CursorTop;
Console.CursorSize = 100;
Console.CursorTop = top;
ConsoleKey key;
while ((key = Console.ReadKey(true).Key) != ConsoleKey.Enter)
{
    if (key == ConsoleKey.UpArrow)
    {
        if (y > top)
        {
            y--;
            Console.CursorTop = y;
        }
    }
    else if (key == ConsoleKey.DownArrow)
    {
        if (y < down - 1)
        {
            y++;
            Console.CursorTop = y;
        }
    }
}
Console.CursorTop = down;
if (y == top)
    Console.WriteLine("один");
else if (y == top + 1)
    Console.WriteLine("два");
else if (y == top + 2)
    Console.WriteLine("три");

Пользователю выводится список, по которому он может перемещаться, нажимая клавиши вверх и вниз. После чего сделать выбор, нажав Enter.

При желании, можно добавить в консольное приложение графическое окошко. Но лучше так не делать, а сразу создавать оконное приложение.

Добавьте в проект ссылку на сборку System.Windows.Forms.dll.

После чего можно сваять следующее:

var list = new List<string> { "one", "two", "three" };
var form = new Form();
var listBox = new ListBox { Parent = form };
listBox.DataSource = list;
var button = new Button { Parent = form, Text = "OK", Left = 200, Top = 230, DialogResult = DialogResult.OK };
form.AcceptButton = button;
form.ShowDialog();
var value = (string)listBox.SelectedValue;
Console.WriteLine(value);

Тут всё просто: создали форму, на неё поместили листбокс, к нему привязали список с нужными значениями. Также на форму помещаем кнопку и настраиваем необходимые свойства так, чтобы нажатие клавиши Ввод (Enter) закрывало форму.

После закрытия окна получаем из листбокса выбранный пункт.

READ ALSO
Миграция в ClearDB MySQL

Миграция в ClearDB MySQL

Имеется БД MySQL, которую надо импортировать в heroku, но heroku работает только с postgresОднако есть плагин ClearDB MySQL

102
_mysql_exceptions.ProgrammingError: 1064

_mysql_exceptions.ProgrammingError: 1064

Нужно создать модели в Django на основе уже имеющейся БД mysqlДля этого я выполняю следующие команды:

98
Loop в mysql 8.0.16

Loop в mysql 8.0.16

Нужно сделать цикл для одноразовой вставки множества записей в таблицуПисал цикл по примеру из документации MySql, однако все равно получаю...

128
Array Select в php

Array Select в php

Предположи у меня есть массив такого формата

111