Перейти к содержимому

Как скрыть форму в c

  • автор:

Как скрыть форму, не работает Hide и Opacity?

Почему-то, когда галочку снимаешь, форма не пропадает.

  • Вопрос задан более трёх лет назад
  • 737 просмотров

2 комментария

Простой 2 комментария

FoggyFinder

Foggy Finder @FoggyFinder
Звучит как проблема XY. Не могли бы вы уточнить что вы хотите реализовать?

foxlye

foxlye @foxlye Автор вопроса

Foggy Finder, Если галочка поставлена, открывается вторая форма, если галочку убрать, она закрывается.
Проблема: Она не закрывается

Решения вопроса 1

Если весь этот код написан в обработке изменения состояния галочки, то проблема очевидна: у вас всегда создаётся новая форма.
Ссылку на открытую и показанную форму нужно сохранить вне метода, и её прятать.

Как скрыть форму в c

Визуальное скрытие элементов графического интерфейса

Всем доброго времени суток! В этой статье я расскажу о том, как можно скрывать (делать невидимыми для пользователя) элементы графического интерфейса, например, кнопки, или поля ввода текста. Скрывать элементы интерфейсы в Windows Forms приложениях можно как до компиляции приложения, так и после этого (во время выполнения приложения). При этом, скрытые элементы интерфейса, в дальнейшем, можно сделать видимыми, что дает программисту возможность создавать более удобные в использовании приложения.

Скрываем кнопку до компиляции приложения

Сначала, я покажу как можно сделать невидимым элемент графического интерфейса до компиляции программы. В таком случае, после компиляции и запуска программы, скрытый элемент сразу будет невидим пользователю. Элементы графического интерфейса пользователя делаются невидимыми с помощью установки свойству «Visible» значения false, в окне свойств («Properties»). На рисунке ниже, показан фрагмент IDE MS Visual Studio, в котором для кнопки с текстом «Скрываемая кнопка» в окне «Properties» я установил свойству «Visible» значение false.

Визуальное скрытие кнопки в дизайнере

Визуальное скрытие кнопки в дизайнере

Теперь, если скомпилировать приложение и запустить его, то кнопки с текстом «Скрываемая кнопка» не будет видно на форме (и естественно, на неё нельзя будет «нажать»).

Скрываем кнопку в процессе выполнения приложения

Чтобы скрыть кнопку в процессе выполнения приложения (например, при загрузке формы, мы проверяем некое условие, и если оно выполнилось, мы делаем кнопку невидимой) нужно в коде установить всё тому же свойству «Visible» из значение false. Пример, в котором я делаю кнопку с названием (именем) «btnSimple» невидимой приведен ниже:

//При загрузке формы private void fMain_Load(object sender, EventArgs e) < //Допустим, тут мы проверяем какое-то условие и оно выполнилось. //Теперь нужно скрыть кнопку, что мы и делаем ниже! //Делаем невидимой кнопку с именем btnSimple btnSimple.Visible = false; >

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

//Делаем невидимой кнопку с именем btnSimple btnSimple.Visible = true;

Вот собственно и всё.

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Как открыть и закрыть форму из другой формы в C# (правильное решение)

Как открыть и закрыть форму из другой формы в C# (правильное решение)

C# изучаю не так давно и встала передо мной недавно задача:
— открыть Form2 при нажатии на кнопку в Form1;
— спрятать Form1;
— открыть Form1 при закрытии Form2.
На первый взгляд задача показалась элементарной, но… возникли нюансы — при закрытии приложения оно не выгружалось и в диспетчере задач мы наблюдали его работу, хотя визуально оно как бы закрылось.

В чём же причина такого поведения? Об этом расскажу дальше. Рассмотрим открытие и закрытие форм на примерах.

Открываем и закрываем форму из другой формы

У нас в приложении есть две формы Form1 — главная, которая открывается сразу при запуске приложения и Form2, которую открываем по нажатию на кнопку.

Чтобы открыть Form2 нам необходим следующий код, который будет срабатывать при нажатии на кнопку:

private void button1_Click(object sender, EventArgs e)

Теперь у нас открылась Form2 и спряталась Form1. Поработав с Form2 мы её закрываем и при этом нам надо после этого отобразить Form1. Многие начинающие, включая меня начинают писать следующий код, который помещаем в событие, которое происходит после закрытия Form2:

private void Form2_FormClosed(object sender, FormClosedEventArgs e)

Вроде всё логично: Form2 закрылась, Form1 открылась. Однако используя этот метод, мы можем заметить, что после того как мы закрываем приложение оно продолжает висеть в памяти. Многие, не зная почему это происходит дописывают в метод «Form1_FormClosed» дописывают принудительное закрытие приложения:

Application.Exit();

Это работает, однако правильно ли это? Решать вам.

А теперь ответим на вопрос «почему приложение висит в памяти» и рассмотрим простое и правильное решение.

Первая часть кода: мы отображаем Form2 и скрываем Form1. Не закрываем, а именно скрываем, т.е. экземпляр Form1 продолжает существовать.

Закрыть Form1 вместо скрытия не получится, так как это главная форма приложения и при её закрытии мы закроем всё приложение.

Вторая часть кода: строкой «Form ifrm = new Form1();» мы создаём второй экземпляр Form1 и далее его и отображаем, а первый экземпляр Form1 продолжает жить в памяти. И когда мы закрываем приложение (Form1), то первый экземпляр при этом не закрываем он так и «сидит» в памяти, поэтому приложение не выгружается из памяти. В связи с этим многие и закрывают принудительно приложение при закрытии главной формы (Form1).

Сейчас мы с вами рассмотрим правильный код, который не будет создавать второй экземпляр Form1 и отображать его, а будет отображать скрытую до этого Form1.

private void Form2_FormClosed(object sender, FormClosedEventArgs e)

OpenForms — получает коллекцию открытых форм приложения. В нашем случае мы сразу обратились к главной форме приложения (OpenForms[0]).

Теперь при закрытии Form2 у нас будет вызываться и отображаться та форма, которая породила закрывающуюся.

Учитываем координаты форм при открытии

Представьте ситуацию. Открыта Form1 вы её перемещаете в правый верхний угол экрана. Потом нажимаете на кнопку и… Form2 открывается по центру экрана или в другом месте, но не в том месте, где была Form1. Многие улыбнуться и скажут, что в свойствах Form2 надо прописать/указать следующее «StartPosition -> CenterParent» и открывать Form2 следующим методом:

Form ifrm = new Form2(); ifrm.ShowDialog();

Это правильное решение, которое всегда будет открывать Form2 поверх Form1 и всегда по центру Form1. Однако этот код не применим, если вам надо скрывать Form1, так как Form1 не будет скрываться.

Сейчас приведу полное решение, которое позволит открывать Form1 и Form2 в той же точке, где находилась до этого форма, вызывающая другую форму. Код включает всё вышеописанное. В свойствах форм надо прописать следующее (прямо в студии выбираете эти значения):

— свойство Form1: «StartPosition -> CenterScreen»
— свойство Form2: «StartPosition -> Manual»

Открыть и закрыть форму из другой формы в C# (правильное решение)

private void button1_Click(object sender, EventArgs e)
private void Form2_FormClosed(object sender, FormClosedEventArgs e)

Теперь вы не создаёте второго экземпляра Form1 и приложение всегда будет закрываться, не оставаясь в памяти.

Открываем форму поверх другой формы, как модальное окно

Чтобы открыть Form2 поверх Form1, как модальное окно, не скрывая Form1, вам хватит этого кода:

private void button1_Click(object sender, EventArgs e)

В итоге Form2 будет открыта поверх Form1. В этом случае пользователь не сможет переключиться на Form1 не закрыв Form2.

Как увеличить яркость в игре Doom 4 (2016)

Предыдущая запись

Как создать генератор паролей на C#

Следующая запись

Отличная статья, как раз решило мою идентичную проблему, автору удачи в дальнейшем и спасибо за помощь.

вроде стать о том как с одной формы закрыть другу?! причем тут скрытие/закрытие первой открытия второй и на оборот.

Cкрытие и закрытие форм

Добавление элементов управления в формы Windows Forms

Большинство форм разрабатываются путем добавления элементов управления на поверхность формы с целью создания пользовательского интерфейса. Чтобы нарисовать элемент управления в форме, выполните следующие действия.

  1. Откройте форму.
  2. В панели элементов щелкните элемент управления, который требуется добавить в форму.
  3. Щелкните место в форме, где должен располагаться левый верхний угол элемента управления, а затем перетащите указатель мыши на место, в котором должен располагаться правый нижний угол элемента управления.

Элемент управления добавляется на форму в указанное место с указанными размерами. Примечание. Для каждого элемента управления существует размер, определенный по умолчанию. На форму можно добавить элемент управления, который будет иметь размер по умолчанию. Для этого требуется перетащить элемент управления из панели элементов на форму. Чтобы перетащить элемент управления в форму, выполните следующие действия.

  1. Откройте форму.
  2. В панели элементов щелкните требуемый элемент управления и перетащите его в форму.

Элемент добавляется в форму в указанное место с размером по умолчанию. Примечание. Чтобы добавить элемент управления с размером по умолчанию в верхний левый угол формы, щелкните его два раза в панели элементов. Можно также добавлять элементы управления на форму динамически во время выполнения. В приведенном ниже примере элемент управления TextBox (текстовое поле) будет добавлен на форму после щелчка элемента управления Button (кнопка). Примечание. Для следующей процедуры требуется форма с уже расположенным в ней элементом управления Кнопка Button1 . Чтобы добавить элемент управления в форму с помощью программных средств, необходимо в метод, который обрабатывает событие (например, Click для кнопки) в результате которого должен быть добавлен элемент управления, добавить код, идентичный приведенному ниже. В коде прописаны команды: добавление ссылки на переменную элемента управления, задание расположения (свойство Location) элемента управления и добавления самого элемента управления. private void button1_Click(object sender, System.EventArgs e)TextBox myText = new TextBox();myText.Location = new Point(25,25);this.Controls.Add (myText);>

15.08.2019 31.37 Mб 5 Метод указ к КР по мат мет.docx

17.11.2019 95.74 Кб 1 Метод.указания по оформлению КР.doc

24.11.2019 3.85 Mб 18 методич для заоч.doc

01.12.2018 791.04 Кб 14 Методичка англ.яз.doc

30.08.2019 75.49 Кб 1 Методичка История ЗФ ИНиГ.docx

08.11.2018 5.81 Mб 223 Методичка по C#.doc

19.08.2019 2.54 Mб 72 Методичка по C#_Часть1.doc

28.08.2019 251.39 Кб 6 Методичка по курсовым работам по педагогике.doc

18.11.2019 411.65 Кб 2 Методичка по теории и методике воспитания.doc

26.11.2019 856.28 Кб 2 метрология,стандартизация и рертификация.docx

15.09.2019 201.73 Кб 2 МИ5.doc

Ограничение

Для продолжения скачивания необходимо пройти капчу:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *