Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676

Насколько важен Application.Run() в приложении?

17.12.2024, 09:59. Показов 2757. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго дня!

мне необходимо сделтаь приложение у которого будет скажем три окна

1. окно Авторизация

2. окно Меню программы

3. окно Основное окно программы

так вот из всех трех мы должны передвигаться закрывая предыдущее окно

если в окне 1 (авторизация) провильно ввели логин и пароль

мы обязательно должны попасть в окно 2. (меню программы)

из окна же 2. мы можем вернуться в окно 1. или перейти дальше к окну 3. (сновное окно)

так вот я решил использовтаь класс
C#
1
Program
убрав из него
C#
1
Application.Run();
это работает ка кмне надо! но. я все -же озадачился а насколкьо верно так использовтаь этот класс?

вот класс

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
internal static class Program
{
    /// <summary>
    ///  The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
 
      
        ApplicationConfiguration.Initialize();
 
        Loginmethod();
 
       // Application.Run();
 
        Runmethod();
    }
    static void Runmethod()
    {
       bool ВызванВыходИзОсновногоОкна = false;
using (var loginForm = new Auth())
{
    if (loginForm.ShowDialog() == DialogResult.OK)
    {
        ВызванВыходИзОсновногоОкна = true;
    }
}
if (!ВызванВыходИзОсновногоОкна) return;
 
MenuMethod();
    }
 
    static void Loginmethod()
    {
        bool АвторизациУспешна = false;
        using (var loginForm = new Auth())
        {
            if (loginForm.ShowDialog() == DialogResult.OK)
            {
                АвторизациУспешна = true;
            }
        }
        if (!АвторизациУспешна) return;
        
        Menumethod();
    }
 
    static void Menumethod()
    {
        int Чтоделаем = 0;
        using (var ChoosingAnOperationForm = new ChoosingAnOperation())
        {
            if (ChoosingAnOperationForm.ShowDialog() == DialogResult.OK)
            {
                Чтоделаем = ChoosingAnOperationForm.GoMethod;
            }
        }
        if (Чтоделаем == 0)
        {
            return;
        }
        else if (Чтоделаем == 99)
        {
            //Снова в автоизиацию
            Loginmethod();
        }
        else if (Чтоделаем == 2)
        {
            //запускаем основное окно
            Runmethod();
        }
        else if (Чтоделаем == 102)
        {
            //Завершение работы компьютера
            //Shutdown();
            MessageBox.Show("Вы выбрали команду завершения работы ПК");
        }
 
    }
 
    static void Shutdown()
    {
        ManagementBaseObject mboShutdown = null;
        ManagementClass mcWin32 = new ManagementClass("Win32_OperatingSystem");
        mcWin32.Get();
 
        // You can't shutdown without security privileges
        mcWin32.Scope.Options.EnablePrivileges = true;
        ManagementBaseObject mboShutdownParams =
                 mcWin32.GetMethodParameters("Win32Shutdown");
 
        // Flag 1 means we want to shut down the system. Use "2" to reboot.
        mboShutdownParams["Flags"] = "1";
        mboShutdownParams["Reserved"] = "0";
        foreach (ManagementObject manObj in mcWin32.GetInstances())
        {
            mboShutdown = manObj.InvokeMethod("Win32Shutdown",
                                           mboShutdownParams, null);
        }
    }
Добавлено через 15 минут
смысл моего приложения всегда оставаться открытым

я еще не писал но вс ебудет обернуто в исключения и в случае исключений будут
закрыватьс яопределенные окна и открывать новые

это приложение киоск для взаимодествия с кассовым аппаратом
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.12.2024, 09:59
Ответы с готовыми решениями:

To run this application you must install .net
Создал простое приложение с помощью Forms. При передаче релиза на другой компьютер пишет &quot;to run this application you must install...

Ошибка CS0246 в строке Application.Run
как видео из темы работаю с графикой. строчка Application.Run(new Form1()); выдает ошибку cs0246. Какую дерективу надо подключить что бы...

BindingSource.Filter и Application.Run
Появилась очень странная проблема, смысл которой я никак не могу понять. Делаю простой фильтр с использованием комбобокса в...

42
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
17.12.2024, 10:53  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Usaga Посмотреть сообщение
Это звучит как бред. Искажённая трактовка плохо понятной задачи.
задача ставилась устно

мне было сказано

что должно быть обязательно именно куча ворм

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

тоесть типа отдельные приложения для каждой задачи

но построенные так тчо бы незапустив приложение авторизации и не пройдя ее (авторизацию)

ты не должен иметь возможность запустить приложение выбора меню))

ка кто так было сказано

я сразу сказал что можно вс еэто реализовать на конролах или MDI

на что сразу последовал отказ сказали делать отдельные формы и все (

типа в приложении не должно быть публичных классов

все классы должны быть в кажой форме

для авторизации свои для работы с товарами свои

Добавлено через 2 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
Так уже выше подсказали: Wizard.

ок буду читать искать примеры потому что не слышал об этом (
0
Эксперт .NET
 Аватар для Usaga
14365 / 9466 / 1360
Регистрация: 21.01.2016
Сообщений: 35,698
17.12.2024, 10:54
Sanya2019, так отдельные приложения или несколько окон в одном?

Цитата Сообщение от Sanya2019 Посмотреть сообщение
типа в приложении не должно быть публичных классов
Ого! А это от чего защита?)))

Цитата Сообщение от Sanya2019 Посмотреть сообщение
все классы должны быть в кажой форме
Класс или экземпляр класса?

Я не понимаю суть вопроса безопасности, который таким кривым образом ты решаешь.
1
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
17.12.2024, 10:55  [ТС]
Подскажите https://blog.differentpla.net/... in-csharp/

я выбрал верный пример?
0
Эксперт .NET
 Аватар для Rius
13350 / 7806 / 1694
Регистрация: 25.05.2015
Сообщений: 23,768
Записей в блоге: 14
17.12.2024, 10:55
Sanya2019,
Вот очень упрощённый пример за 5 минут
Вложения
Тип файла: 7z WindowsFormsApp1.7z (11.9 Кб, 4 просмотров)
1
Эксперт .NET
 Аватар для Usaga
14365 / 9466 / 1360
Регистрация: 21.01.2016
Сообщений: 35,698
17.12.2024, 10:56
Цитата Сообщение от Sanya2019 Посмотреть сообщение
я выбрал верный пример?
Да бог тебя знает. С такой постановкой вопроса трудно судить)
1
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
17.12.2024, 10:57  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Ого! А это от чего защита?)))
для того что бы пройти сертификацию

типа по их мнению такой способ самый лучший типа на юзер контролах они не прошли сертификацию))

я не знаю почему мне сказали пистаь именно так и ни как иначе))

но при этом у них был C а я пишу на C# ))

фиг их пойми начига такие требования но я с удавольствием набросаю пример того как Вы предлогаете и пойду показывать подойдет буду продолжать пистаь именно так
0
Эксперт .NET
 Аватар для Rius
13350 / 7806 / 1694
Регистрация: 25.05.2015
Сообщений: 23,768
Записей в блоге: 14
17.12.2024, 11:01
Контрол точно также можно задиспозить, как и форму.
И форму можно точно также забыть задиспозить, как и контрол, оставить ссылки и организовать утечку памяти.

Добавлено через 47 секунд
Цитата Сообщение от Sanya2019 Посмотреть сообщение
но при этом у них был C а я пишу на C# ))
Да, тут есть GC, который кучу таких проблем решает сам.
0
Эксперт .NET
 Аватар для Usaga
14365 / 9466 / 1360
Регистрация: 21.01.2016
Сообщений: 35,698
17.12.2024, 11:03
Sanya2019, не удивлюсь, если сертификацию будут проводить такие же чуваки, как и те, что ставили тебе задачу.

А так, вопрос разделения на несколько окон улучшает безопасность приложения так же, как добавление стеклянных межкомнатных дверей в квартире.
1
Эксперт .NET
 Аватар для Rius
13350 / 7806 / 1694
Регистрация: 25.05.2015
Сообщений: 23,768
Записей в блоге: 14
17.12.2024, 11:14
Цитата Сообщение от Sanya2019 Посмотреть сообщение
я выбрал верный пример?
От Wizard требуется сам принцип перехода между режимами.
Кнопки далее/назад и оформление не требуются. Также как и чёткая последовательность переходов, используемая в Wizard.

Добавлено через 8 минут
Как реализовать несколько форм в одном окне
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
17.12.2024, 11:25  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Вот очень упрощённый пример за 5 минут
Спасибо!

я предлогал такое но мне сказали что так якобы делать нельзя

на вопроса почему мне было сказано типа тогда будет запущена всегда одна форма из которой мы якобы можем выполнить любые классы и т д

в то же время якобы из класса гловного мы не можем получить доступ к классам опредленной формы

бред но я попробую переписать так как Вы предоожили и дать на приемку посмотрим может и примут

))

Спасибо еще раз!

Добавлено через 2 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
А так, вопрос разделения на несколько окон улучшает безопасность приложения так же, как добавление стеклянных межкомнатных дверей в квартире.

я с Вами полностью согласен!

но как вбить в голову начальству я понятия не имею они стоят на своем и все!

я им сказал что
C#
1
Application.Run();
обязателен в приложении

они задают вопрос а почему?

я не могу ответить так как сам не знаю я самоучка )))

от тог омного го не знаю я учу ООП и никогд атак как предлогают они не писал

поэтому и задумался а на сколько важен Application.Run();
0
Эксперт .NET
 Аватар для Rius
13350 / 7806 / 1694
Регистрация: 25.05.2015
Сообщений: 23,768
Записей в блоге: 14
17.12.2024, 11:30
но как вбить в голову начальству я понятия не имею они стоят на своем и все!
Стать специалистом.
Форма - такой же класс, как и юзер контрол.
1
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
17.12.2024, 11:32  [ТС]
))

не взяли они меня сказали идти лесом со своими предложениями))

якобы их программист не должен решать сам ка кписать типа решают это они

мне якобы была поставлена четкая задача

а на юзер контролах якобы он через Hexредактор лекго запустит любой мой юзер контрол из любого места моей одной формы в то же время говорит попробуй мое приложение гд евс еработает отдельно

выполнмть из формы автоизиции метод закртыия чека ))

)))

короче пошли они )))

сказали меня никто больше в городе не возмет на работу типа он договариться )))

)))))))))))))))))))))))))))
0
 Аватар для Andrey-MSK
3371 / 2257 / 388
Регистрация: 14.08.2018
Сообщений: 7,646
Записей в блоге: 4
17.12.2024, 11:33
Sanya2019,

Не по теме:

Можно я отсыплю запятых и точек?

0
Эксперт .NET
 Аватар для Rius
13350 / 7806 / 1694
Регистрация: 25.05.2015
Сообщений: 23,768
Записей в блоге: 14
17.12.2024, 11:37
Sanya2019, тогда бегите оттуда, пока не поздно.
Дебилы какие-то.

Добавлено через 1 минуту
По теме - можете создавать форму и вызывать её через application run. Для успокоения души. Говнокодить так говнокодить.

Не по теме:

:::) ::) :) ::))) ::) :) ::) :) :) :) :) :) ::)))))))) :) :)

0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
17.12.2024, 11:42  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
тогда бегите оттуда, пока не поздно.
Дебилы какие-то.

Уже и даже послал их)))
1
Эксперт .NET
 Аватар для Rius
13350 / 7806 / 1694
Регистрация: 25.05.2015
Сообщений: 23,768
Записей в блоге: 14
17.12.2024, 11:56
Цитата Сообщение от Sanya2019 Посмотреть сообщение
он через Hexредактор лекго запустит любой мой юзер контрол
Если на киоске любой юзер может запустить hex-редактор для программы, установленной в program files, то у меня для вас них плохие новости...

Не по теме:

Посылать излишне.

1
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,774
17.12.2024, 15:58
Даже если явно не вызывать 'Application.Run', стандартный цикл обработки событий всё равно запускается и корректно работает. И экземпляр 'Application' корректно инициализируется и реагирует на все открытия/закрытия форм приложения. Даже если закрывается последняя форма приложения, а потом открывается новая, в статической коллекции 'Application.OpenForms' это корректно отображается (формы там появляются/исчезают).

Потому как, когда вы выполняете (в main-методе вместо 'Application.Run'):
C#
1
new Form().ShowDialog()
Внутри всё равно происходит вызов:
C#
1
Application.RunDialog(this)
Который в свою очередь выполняет:
C#
1
ThreadContext.FromCurrent().RunMessageLoop(msoloop.ModalForm, new ModalApplicationContext(form));
Т.е. ровно то же, что и при вызове:
C#
1
Application.Run(new Form());
P.S.: подход немного нестандартный, конечно, но вполне жизнеспособный. Если грамотно оформить КА верхнего уровня для навигации между формами приложения, то и работать с таким кодом будет вполне комфортно.

Добавлено через 32 минуты
Цитата Сообщение от Sanya2019 Посмотреть сообщение
и гарантированно убивало все данные когда завершилось работа какого либо окна
Но для этого придётся:

1. Либо открывать каждое окно в виде отдельного процесса.

2. Либо, независимо от подхода к организации main-метода и способа управления окнами, упарываться в какие-то странные подходы с принудительной перезаписью всех свойств всех объектов в памяти нулями (в т.ч. строк и массивов, для которых недостаточно будет просто сделать '= null'). Потому как, хотя я точно не знаю настолько глубоко, GC вряд ли выполняет именно очистку (заполнение нулями) высвобождаемой памяти.

Добавлено через 6 минут
P.S.: в каком-то смысле задача даже интересная - реализовать приложение, которое в каждый момент времени будет потреблять минимум необходимых ему ресурсов и будет гарантированно вычищать из памяти всё, что ему больше не нужно ... однако, затребованный подход к управлению окнами к этой задаче никакого отношения не имеет.
1
Эксперт .NET
 Аватар для Rius
13350 / 7806 / 1694
Регистрация: 25.05.2015
Сообщений: 23,768
Записей в блоге: 14
17.12.2024, 16:08
Тут речь о
  • Минимуме потребляемых ресурсов;
  • Разграничении доступа между классами (инскапсуляция);
  • Защите от ввода некорректных данных;
  • Защите от обхода алгоритмов.
И всё перепутано в меру понимания какого-нибудь 70-летнего дедушки, который после 5-х дельфей ничего не изучал.
Можно было бы сделать красиво, правильно и поддерживаемо на будущее, но не дадут. И, судя по цитатам, не только в упомянутых вопросах. Даже зная, что сделать обозначенное так, как сказали, возможно, сама работа на таких условиях это жесть.

Навскидку, запретят использование каких-нибудь встроенных классов .Net, потому что дедушке более милы функции WinAPI. Просто потому, что он их знает, а мнение какого-там погромиста его не волнует.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
17.12.2024, 16:23  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Вот очень упрощённый пример за 5 минут
Изучаю Ваш проект и не понимаю прикола :-)

добавил
C#
1
MessageBox.Show("Hi");
здесь

он открывает и сразу закрывается как так?
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void ControlDBOnOnExit(object sender, EventArgs e)
{
    if (_currentControl != null)
    {
        if (_currentControl is ControlDatabase controlDatabase) controlDatabase.OnExit -= ControlDBOnOnExit;
 
        _currentControl.Parent = null;
        _currentControl.Dispose();
    }
    MessageBox.Show("Hi");
    ShowAuth();
}
0
Эксперт .NET
 Аватар для Rius
13350 / 7806 / 1694
Регистрация: 25.05.2015
Сообщений: 23,768
Записей в блоге: 14
17.12.2024, 16:26
Sanya2019,
C#
1
MessageBox.Show(this, "Hi");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.12.2024, 16:26

Application run: параметр задан неверно - исключение в приложении на Windows XP
Всем привет.Ребят помогите разобраться.Сделали небольшое приложение, на 7 все работает отлично.На xp вылетает исключение. Обложили все try...

Насколько важен показатель turbo boost?
На некоторых фильтрах сайтов о процэссорах замечаю использование значения &quot;турбо-буст&quot;-частоты вместо обычной - на сколько это...

Насколько важен процессор в играх, Или видеокарта важнее?
:( Мой вот такой Pentium D 2.8 MHz S775, ram 3gb. Стояла карта 8800gtx(сгорела). Но даже с ней игры почему то тормозили последнее время...

Насколько вообще важен алиас в адресной строке URL вместо id и т.п
Здравствуйте! Поиском воспользовался, прежде чем создать тему, но конкретного ответа не нашёл. Подскажите пожалуйста, насколько реально...

(Application.Run(Window) | Application.MainWindow.ShowDialog() - ArgumentExceprion
только начал обучаться WPF по книжке Мак-Доналда, для меня в этой технологии всё ново. вот с чем столкнулся: после создания *.cs файла с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru