Задать вопрос
@MiroslavKolesnikov

Как создать приложение в Windows Forms из имеющегося консольного?

Возможно ли из этого кода сделать подобное приложение в Windows Forms?
spoiler
using System.Reflection;
using System.Text;
using System.Text.Json;

namespace Directory
{
    public enum Brand
    {
        Volkswagen,
        Toyota_Motors,
        Daimler,
        Ford_Motor,
        General_Motors,
        Honda_Motor,
        SAIC_Motor,
        Hyundai,
        BMW_group,
        Nissan_Motor
    }

    public enum BodyType
    {
        Hatchback,
        Sedan,
        MUV_SUV,
        Coupe,
        Convertible,
        Wagon,
        Van,
        Jeep,
    }

    public enum EngineType
    {
        Diesel, Petrol, Electric, Hybrid, Gas
    }

    public class Car
    {
        public Brand Brand;
        public BodyType Bodytype;
        public EngineType Enginetype;
        public int Power;
        public int Maximumspeed;
        public int Accelerationtime;
        public int Fuelconsumptioncity;
        public int Fuelconsumptionhighway;
        public int Numberofseats;

        public Car(Brand brand, BodyType bodytype, EngineType enginetype, int power, int maximumspeed,
            int accelerationtime, int fuelconsumptioncity, int fuelconsumptionhighway, int numberofseats)
        {
            Brand = brand;
            Bodytype = bodytype;
            Enginetype = enginetype;
            Power = power;
            Maximumspeed = maximumspeed;
            Accelerationtime = accelerationtime;
            Fuelconsumptioncity = fuelconsumptioncity;
            Fuelconsumptionhighway = fuelconsumptionhighway;
            Numberofseats = numberofseats;
        }

    }

    class Program
    {
        private const string PathForSave = @"D:\cars.json";

        private static List<Car> _carList = new List<Car>();
        private static bool _saved = false;
        static void Main()
        {
            StartMenu();
        }
        static void StartMenu()
        {
            bool exit = false;

            while (exit == false)
            {
                Console.Clear();
                Console.WriteLine("1. Добавить автомобиль");
                Console.WriteLine("2. Список текущих автомобилей");
                Console.WriteLine("3. Записать автомобили в файл " + (_saved ? "(сохранено)" : "(* не сохранено!)"));
                Console.WriteLine("4. Выйти");
                switch (Console.ReadKey().KeyChar)
                {
                    case '1':
                        Console.Clear();
                        _carList.AddRange(AddCars());
                        break;
                    case '2':
                        WriteCars();
                        break;
                    case '3':
                        SaveToJsonAsync();
                        break;
                    case '4':
                        exit = true;
                        break;
                    default:
                        break;
                }
            }
        }

        private static void WriteCars()
        {
            Console.Clear();

            Console.WriteLine("Список текущих автомобилей\n");
            for (int i = 0; i < _carList.Count; i++)
            {
                Console.WriteLine($"{i + 1}.");
                foreach (FieldInfo field in _carList[i].GetType().GetFields())
                {
                    Console.WriteLine($"{field.Name} : {field.GetValue(_carList[i])}");
                }
                Console.WriteLine();
            }
            Console.WriteLine(new string('-', 50));

            Console.Write("Enter для выхода в меню...");
            Console.ReadLine();
        }

        static async void SaveToJsonAsync()
        {
            using (FileStream fs = new FileStream(PathForSave, FileMode.Create))
            {
                await Task.Run(() => JsonSerializer.SerializeAsync(fs, _carList, new JsonSerializerOptions() { IncludeFields = true }));
                _saved = true;
            }
        }

        static int ReadPositiveInt()
        {
            int result;

            while (int.TryParse(Console.ReadLine(), out result) == false || result < 0)
            {
                Console.WriteLine("Неправильные данные. Должно быть положительное число.");
            }

            return result;
        }

        private static T ReadEnum<T>() where T : Enum
        {

            var names = Enum.GetNames(typeof(T));

            for (int i = 0; i < names.Length; i++)
            {
                Console.WriteLine($"{i}. {names[i]}");
            }

            int result;
            while ((result = ReadPositiveInt()) >= names.Length)
            {
                Console.WriteLine($"Неправильные данные. Должно быть положительное число от 0 до {names.Length - 1}.");
                Console.Write("Попробуйте ещё раз: ");
            }

            return (T)Enum.Parse(typeof(T), names[result]);
        }
        static List<Car> AddCars()
        {
            List<Car> cars = new List<Car>();

            Console.Write("Сколько автомобилей вы хотите добавить?\n");
            int count = ReadPositiveInt();

            for (int i = 0; i < count; i++)
            {
                Console.WriteLine($"{i + 1})");
                Console.WriteLine($"Выберите марку\n");
                Brand brand = ReadEnum<Brand>();

                Console.Write("Введите тип кузова:\n");
                BodyType bodytype = ReadEnum<BodyType>();

                Console.Write("Введите тип двигателя :\n");
                EngineType enginetype = ReadEnum<EngineType>();

                Console.Write("Введите мощность двигателя:\n");
                int power = ReadPositiveInt();

                Console.Write("Введите максимальную скорость:\n");
                int maximumspeed = ReadPositiveInt();

                Console.Write("Введите время разгона:\n");
                int acceleratintime = ReadPositiveInt();

                Console.Write("Введите расход топлива в городе:\n");
                int fuelconsumptioncity = ReadPositiveInt();

                Console.Write("Введите расход топлива на шоссе:\n");
                int fuelconsumptionhighway = ReadPositiveInt();

                Console.Write("Введите количество мест:\n");
                int numberofseats = ReadPositiveInt();

                Car a = new Car(brand, bodytype, enginetype, power, maximumspeed, acceleratintime, fuelconsumptioncity,
                    fuelconsumptionhighway, numberofseats);
                cars.Add(a);

                Console.Write("Добавлено!\n\n\n");
            }

            if (cars.Count != 0)
                _saved = false;

            return cars;
        }
    }
}
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Сложный 1 комментарий
Решения вопроса 1
Отвечая на поставленный в заголовке вопрос: да, возможно.
Но придётся всё переписать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
Поменять в .csproj <OutputType>Exe</OutputType> на <OutputType>WinExe</OutputType>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы