Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/50: Рейтинг темы: голосов - 50, средняя оценка - 4.74
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 125

Скрыть при запуске главную Form1 и открыть Form2

28.10.2012, 01:57. Показов 10312. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую. Суть описана в заголовке)
Требуется, чтобы после запуска exe открывалась сразу 2я форма, а уже потом после выполнения определенных условий она закрывалась и открывалась 1я форма, все никак не выходит у меня.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   
 public partial class Form1 : Form
    {
        Form2 f2 = new Form2();
 
        public Form1()
        {
 
            if ("условие")
            f2.Show();
            else
            InitializeComponent();
         }
 
}
Это было единственное решение, когда сразу запускалась форма 2, но 1я форма потом уже не активировалась. Прошу помощи в решение).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.10.2012, 01:57
Ответы с готовыми решениями:

Открыть Form2 и скрыть Form1
Как по нажатию на Button открыть Form2 и скрыть(не свернуть) From1?

При условии показать Form2 скрыть Form1
Смотрите в чем проблема: У меня две формы. При загрузки Form1 выполняется проверка: try { IniFile...

Как с использованием кнопки (button) закрыть (скрыть) form1 и открыть form2
uses Unit1, Unit2; begin System.Windows.Forms.Application.EnableVisualStyles(); ...

25
 Аватар для rmavlasv
90 / 90 / 15
Регистрация: 31.03.2010
Сообщений: 293
Записей в блоге: 1
28.10.2012, 07:39
у тебя в проекте есть такой файл Program.cs
в нём есть такая строчка
C#
1
Application.Run(new Form1());
измени её на
C#
1
Application.Run(new Form2());
0
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 125
28.10.2012, 11:46  [ТС]
тогда я на 2й форме пишу аналогичные условия, 1я форма после их прохождения запускается удачно, но 2я не закрывается сама.

C#
1
2
3
4
5
6
7
8
9
10
          
  if (***** == ******)
            {
                Form1 f1 = new Form1();
                Form2 f2 = new Form2();
                f2.Hide();
                f1.Show();
            }
            else
                MessageBox.Show("блабла");
0
 Аватар для rmavlasv
90 / 90 / 15
Регистрация: 31.03.2010
Сообщений: 293
Записей в блоге: 1
28.10.2012, 12:17
сделай вот так
C#
1
2
3
4
5
6
7
8
if (***** == ******)
            {
                Form1 f1 = new Form1();
                f1.Show();
                Enable=false;
            }
            else
                MessageBox.Show("блабла");
0
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 125
28.10.2012, 12:27  [ТС]
тогда уж так, но результат тот же, форма1 открывается, ф2 остается.
C#
1
2
3
4
5
6
7
8
9
10
            if (**** == ****)
            {
                Form2 f2 = new Form2();
                Form1 f1 = new Form1();
                f1.Show();
                f2.Enabled = false;
 
            }
            else
                MessageBox.Show("блабла");
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
28.10.2012, 12:30
А так не вариант?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System.Windows.Forms;
 
namespace WinForms_CloseSecondWnd
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            SecondForm form = new SecondForm();
            form.ShowDialog();
            InitializeComponent();
        }
    }
}
Добавлено через 56 секунд
Судя по тобой приведённому коду не вариант . Подскажи, что ты вообще делаешь? Просто может ты не тем способом проблему решаешь?
0
26 / 26 / 4
Регистрация: 20.07.2012
Сообщений: 399
Записей в блоге: 1
28.10.2012, 12:35
вешай в прорисовки формы1
C#
1
2
3
4
 Hide();
            Form2 form2 = new Form2();
            //вызов модальной формы. Пока диалог не обработаешь, далее вниз код не будет выполняться
            form2.ShowDialog();
но процесс будет висеть от 1 формы

потом там что у тебя
C#
1
2
3
4
5
6
7
 if(иилала)
{
 Hide();
            Form1 form1 = new Form1();
            //вызов модальной формы. Пока диалог не обработаешь, далее вниз код не будет выполняться
            form1.ShowDialog();
}

и хорошо бы если тебе больше ничего не нужно от форм добавлять в концы кода
C#
1
Application.Exit();
это нужно для того чтобы когда переключался через формы как бы и вырубать программы ,но и снимать процессы в диспетчере


я делал так
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
28.10.2012, 12:37
Эту проблему решить проще некуда, я просто хочу понять, что ты вообще делаешь. Что там за условие такое, что надо писать именно так. Когда знаешь задачу, её легче решить. А наугад можно конечно состряпать что-то, но не факт, что это будет один из наилучших вариантов.

Добавлено через 1 минуту
Цитата Сообщение от HPB Посмотреть сообщение
вешай в прорисовки формы1
Думаю точно в прорисовку не стоит (имхо).
0
26 / 26 / 4
Регистрация: 20.07.2012
Сообщений: 399
Записей в блоге: 1
28.10.2012, 12:40
ну не в прорисовки а в loade. имел виду
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
28.10.2012, 12:43
Короче, я так понимаю, что открывается вторая форма, выполняется какой-то код параллельно и через какой-то промежуток времени надо закрыть вторую форму и открыть первую? Или тупо по условию, если верно, то открыть форму 2, если не верно, то 1?

Добавлено через 1 минуту
А так?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System.Windows.Forms;
 
namespace WinForms_CloseSecondWnd
{
    public partial class MainForm : Form
    {
        private bool _condition = true;
 
        public MainForm()
        {
            if (_condition)
            {
                SecondForm form = new SecondForm();
                form.ShowDialog();
            }
 
            InitializeComponent();
        }
    }
}
0
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 125
28.10.2012, 12:44  [ТС]
Цитата Сообщение от Casper-SC Посмотреть сообщение
Эту проблему решить проще некуда, я просто хочу понять, что ты вообще делаешь. Что там за условие такое, что надо писать именно так. Когда знаешь задачу, её легче решить. А наугад можно конечно состряпать что-то, но не факт, что это будет один из наилучших вариантов.
Привязка ПО к железу.

вот это выполняется на 2й форме, finalvalue - результат расшифровки ключа.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
           
        private void button1_Click(object sender, EventArgs e)
        {
            string FinalValue = Decrypt(*****************);
 if (FinalValue == Form1.GetProcID.ProcID())
            {
                Form2 f2 = new Form2();
                Form1 f1 = new Form1();
                f1.Show();
                f2.Enabled = true;
 
            }
            else
                MessageBox.Show("ключ не верный");
        }
0
26 / 26 / 4
Регистрация: 20.07.2012
Сообщений: 399
Записей в блоге: 1
28.10.2012, 12:46
ну смотри у него я так понял такая вот проблемка есть форма1 и форма2 пускай это будет к примеру авторизация чего то там!
запускается форма1 сразу же закрывается и загружает форму2
на форме2 у него есть допустим что то такое что если сделано верно то запускаем форму1 иначе не запускаем

Добавлено через 1 минуту
я могу тебе показать более простую привязку по материнки и процессору
0
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 125
28.10.2012, 12:47  [ТС]
Цитата Сообщение от HPB Посмотреть сообщение
ну смотри у него я так понял такая вот проблемка есть форма1 и форма2 пускай это будет к примеру авторизация чего то там!
запускается форма1 сразу же закрывается и загружает форму2
на форме2 у него есть допустим что то такое что если сделано верно то запускаем форму1 иначе не запускаем
да, верно

Цитата Сообщение от HPB Посмотреть сообщение
я могу тебе показать более простую привязку по материнки и процессору
да у меня и тут по сути все готово уже, но если можешь, давай гляну вариант)
0
26 / 26 / 4
Регистрация: 20.07.2012
Сообщений: 399
Записей в блоге: 1
28.10.2012, 12:55
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void button1_Click(object sender, EventArgs e)
 {
 string FinalValue = Decrypt(*****************);
if (FinalValue == Form1.GetProcID.ProcID())
{
Hide();
 Form1 f1 = new Form1();
f1.Show();
Application.Exit();
}
 else
 MessageBox.Show("ключ не верный");
 }
может так?

или же замените f1.Show(); на f1.ShowDialog();

Добавлено через 2 минуты
и я вам не советую использовать после else Мессадж, можно будет обойти этот пункт и запустить программу без привязки

Добавлено через 3 минуты
C#
1
2
3
4
5
6
7
8
9
private void Form1_Load(object sender, EventArgs e)
        {
 
Hide();
            Form2 form2 = new Form2();
            //вызов модальной формы. Пока диалог не обработаешь, далее вниз код не будет выполняться
            form2.ShowDialog();
 
}
0
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 125
28.10.2012, 13:01  [ТС]
C#
1
2
3
4
5
6
7
            if (tr.ReadLine() != GetProcID.ProcID())
            {
                Form2 f2 = new Form2();
                f2.ShowDialog();
            }
 
            InitializeComponent();
на форме 1 помогло такое решение, чтобы сразу запустить ф2. но собственно это уже было сделано через Application.Run(new Form2());

а вот на ф2 после проверки условия все-равно не закрывается, при этом появляется еще одно окно ф2.

Цитата Сообщение от HPB Посмотреть сообщение
Добавлено через 2 минуты
и я вам не советую использовать после else Мессадж, можно будет обойти этот пункт и запустить программу без привязки
месседж бокс просто для дебага в данном случае
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
28.10.2012, 13:34
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
namespace WinForms_CloseSecondWnd
{
    static class Security
    {
        static Security()
        {
            ProcID = "12345";
        }
 
        public static string Decrypt(string text) //просто имитация
        {
            if (string.IsNullOrWhiteSpace(text))
            {
                return string.Empty;
            }
            return "12345";
        }
 
        public static string ProcID { get; private set; }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System.Diagnostics;
using System.Windows.Forms;
 
namespace WinForms_CloseSecondWnd
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            SecondForm form = new SecondForm();
            form.ShowDialog();
 
            if (!form.GetResultOfDecrypt())
            {
                Process.GetCurrentProcess().Kill();
            }
 
            InitializeComponent();
        }
    }
}
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
using System;
using System.Windows.Forms;
 
namespace WinForms_CloseSecondWnd
{
    public partial class SecondForm : Form
    {
        private bool _success;
 
        public SecondForm()
        {
            InitializeComponent();
        }
 
        private void Button1_Click(object sender, EventArgs e)
        {
            string finalValue = Security.Decrypt(null);
            _success = finalValue == Security.ProcID;
            Close();
        }
 
        internal bool GetResultOfDecrypt()
        {
            return _success;
        }
    }
}
Добавлено через 30 минут
Чисто интересно так вариант или нет? Можно и по другому сделать. Я всё жду, когда же автор, что-нибудь напишет.
0
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 125
28.10.2012, 14:08  [ТС]
[QUOTE=Casper-SC;3620253]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
namespace WinForms_CloseSecondWnd
{
    static class Security
    {
        static Security()
        {
            ProcID = "12345";
        }
 
        public static string Decrypt(string text) //просто имитация
        {
            if (string.IsNullOrWhiteSpace(text))
            {
                return string.Empty;
            }
            return "12345";
        }
 
        public static string ProcID { get; private set; }
    }
}
да, вроде суть понял, но не зря я пишу в разделе для новичков)
не совсем ясно, как мне сюда "public static string Decrypt(string text) //просто имитация"
передать FinalValue,
Миниатюры
Скрыть при запуске главную Form1 и открыть Form2  
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
28.10.2012, 14:15
Цитата Сообщение от opahopa Посмотреть сообщение
не совсем ясно, как мне сюда "public static string Decrypt(string text) //просто имитация"
передать FinalValue,
Я думал этот метод должен генерировать это самое финальное значение. Или я не понял вопрос.
0
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 125
28.10.2012, 15:13  [ТС]
Цитата Сообщение от Casper-SC Посмотреть сообщение
Я думал этот метод должен генерировать это самое финальное значение. Или я не понял вопрос.
этот метод должен генерировать расшифрованное значение ключа
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
28.10.2012, 17:50
Скинь пример с проблемой, что ли. Скриншот вообще ни о чём, не видно ничего. Я не понимаю, зачем передавать в метод Decrypt значение, которое по сути должен возвращать этот метод.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.10.2012, 17:50
Помогаю со студенческими работами здесь

При нажатии кнопки на Form1 открыть Form2
Подскажите как при нажатии кнопки на форме1, открывалась форма2? Но в это время форма1 была невидимая и недоступна.unit Unit1; {$mode...

При нажатии кнопки на Form1 открыть Form2
Подскажите как при нажатии кнопки на форме1, открывалась форма2? Но в это время форма1 была невидимая и недоступна. unit Unit1; ...

Как открыть Form2 при этом закрыть Form1?
var a,b:Integer; procedure TForm1.btn1Click(Sender: TObject); begin b:=123; a:= strToInt(edt1.text); if a=b then Form1.Close; ...

Как сделать так чтобы при запуске программы первой открывалась Form2, а не Form1
Как сделать так чтобы при запуске программы первой открывалась Form2, а не Form1

Как скрыть form1 при запуске программы?
Как скрыть form1 при запуске программы?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru