Как скрыть элемент в windows form

Всем доброго времени суток! В этой статье я расскажу о том, как можно скрывать (делать невидимыми для пользователя) элементы графического интерфейса, например, кнопки, или поля ввода текста. Скрывать элементы интерфейсы в 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;

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

Имеются элементы на форме. При нажатии на некую кнопку, эти элементы должны скрываться и отображаться другие. Как мне на уже существующей форме с элементами расположить другие? для переключения, если старые мешают?


  • Вопрос задан

  • 2074 просмотра

Пригласить эксперта

Попробуйте разместить элементы на GroupBox или Panel и затем меняйте у GroupBox/Panel свойство Visible.
Я в таких случаях на этапе разработки раскладываю GroupBox на форме для проверки отображения в интерфейсе IDE, а в коде (в зависимости от ситуации) меняю Visible и Location — т.е. перемещаю GroupBox/Panel в нужное место при работе программы.

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


  • Показать ещё
    Загружается…

Минуточку внимания

Распределенное обучение с TensorFlow и Python

AI_Generated 05.05.2025

В машинном обучении размер имеет значение. С ростом сложности моделей и объема данных одиночный процессор или даже мощная видеокарта уже не справляются с задачей обучения за разумное время. Когда. . .

CRUD API на C# и GraphQL

stackOverflow 05.05.2025

В бэкенд-разработке постоянно возникают новые технологии, призванные решить актуальные проблемы и упростить жизнь программистам. Одной из таких технологий стал GraphQL — язык запросов для API,. . .

Распознавание голоса и речи на C#

UnmanagedCoder 05.05.2025

Интеграция голосового управления в приложения на C# стала намного доступнее благодаря развитию специализированных библиотек и API. При этом многие разработчики до сих пор считают голосовое управление. . .

Реализация своих итераторов в C++

NullReferenced 05.05.2025

Итераторы в C++ — это абстракция, которая связывает весь экосистему Стандартной Библиотеки Шаблонов (STL) в единое целое, позволяя алгоритмам работать с разнородными структурами данных без знания их. . .

Разработка собственного фреймворка для тестирования в C#

UnmanagedCoder 04.05.2025

C# довольно богат готовыми решениями – NUnit, xUnit, MSTest уже давно стали своеобразными динозаврами индустрии. Однако, как и любой динозавр, они не всегда могут протиснуться в узкие коридоры. . .

Распределенная трассировка в Java с помощью OpenTelemetry

Javaican 04.05.2025

Микросервисная архитектура стала краеугольным камнем современной разработки, но вместе с ней пришла и головная боль, знакомая многим — отслеживание прохождения запросов через лабиринт взаимосвязанных. . .

Шаблоны обнаружения сервисов в Kubernetes

Mr. Docker 04.05.2025

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

Создаем SPA на C# и Blazor

stackOverflow 04.05.2025

Мир веб-разработки за последние десять лет претерпел коллосальные изменения. Переход от традиционных многостраничных сайтов к одностраничным приложениям (Single Page Applications, SPA) — это. . .

Реализация шаблонов проектирования GoF на C++

NullReferenced 04.05.2025

«Банда четырёх» (Gang of Four или GoF) — Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес — в 1994 году сформировали канон шаблонов, который выдержал проверку временем. И хотя C++ претерпел. . .

C# и сети: Сокеты, gRPC и SignalR

UnmanagedCoder 04.05.2025

Сетевые технологии не стоят на месте, а вместе с ними эволюционируют и инструменты разработки. В . NET появилось множество решений — от низкоуровневых сокетов, позволяющих управлять каждым байтом. . .

Last Updated :
17 Apr, 2023

A Button is an essential part of an application, or software, or webpage. It allows the user to interact with the application or software. In Button, you are allowed to set a value which represents the button and its child buttons are displayed by using the Visible Property. It is provided by Button class. If you want to display the given button and its child controls, then set the value of Visible property to true, otherwise set false. The default value of this property is true. You can use this property in two different methods: 1. Design-Time: It is the easiest method to set the visibility of the button. Using the following steps:

2. Run-Time: It is a little bit trickier than the above method. In this method, you can set the Visible property of the Button programmatically with the help of given syntax:

public bool Visible { get; set; }

Here, the return type of this property is System.Boolean. Following steps are used to set the Visible property of the Button:

  • Step 1: Create a button using the Button() constructor is provided by the Button class.
// Creating Button using Button class
Button MyButton = new Button();
  • Step 2: After creating Button, set the Visible property of the Button provided by the Button class.
// Set the visibility of the button
MyButton.Visible = true;
  • Step 3: And last add this button control to form using Add() method.
// Add this Button to form
this.Controls.Add(Mybutton);
  • Example: 

CSharp

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace WindowsFormsApp8 {

public partial class Form1 : Form {

    public Form1()

    {

        InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)

    {

        Label l = new Label();

        l.AutoSize = true;

        l.Text = "Do you want to submit this form?";

        l.Location = new Point(222, 145);

        this.Controls.Add(l);

        Button Mybutton = new Button();

        Mybutton.Location = new Point(225, 198);

        Mybutton.Text = "Submit";

        Mybutton.AutoSize = true;

        Mybutton.BackColor = Color.LightBlue;

        Mybutton.Visible = true;

        this.Controls.Add(Mybutton);

        Button Mybutton1 = new Button();

        Mybutton1.Location = new Point(438, 198);

        Mybutton1.Text = "Cancel";

        Mybutton1.AutoSize = true;

        Mybutton1.BackColor = Color.LightPink;

        Mybutton1.Visible = false;

        this.Controls.Add(Mybutton1);

    }

}

}


Скрыть элементы на форме и показать другие на их месте в Windows Forms.

От:

dmitritch

 
Дата:  06.05.13 10:31
Оценка:

Использую методы Show / Hide элементов и впринципе достигаю требуемого эффекта за исключением того что эле менты остаются на своих местах, т.е. там, где я их положид на форме. Мне же требуется чтобы одни элементы стали невидимы, а другие появились на их месте (по нажатию на кнопку, например).


Re: Скрыть элементы на форме и показать другие на их месте в Windows Forms.

От:

Ромашка

Украина

 
Дата:  06.05.13 10:36
Оценка:

Здравствуйте, dmitritch, Вы писали:
D>Использую методы Show / Hide элементов и впринципе достигаю требуемого эффекта за исключением того что эле менты остаются на своих местах, т.е. там, где я их положид на форме. Мне же требуется чтобы одни элементы стали невидимы, а другие появились на их месте (по нажатию на кнопку, например).

form.Controls.Add, form.Controls.Remove … ну или что там у тебя является контейнером.

Всё, что нас не убивает, ещё горько об этом пожалеет.


Re[2]: Скрыть элементы на форме и показать другие на их месте в Windows Forms.

От:

dmitritch

 
Дата:  06.05.13 10:52
Оценка:

+1

Здравствуйте, Ромашка, Вы писали:

Р>Здравствуйте, dmitritch, Вы писали:

D>>Использую методы Show / Hide элементов и впринципе достигаю требуемого эффекта за исключением того что эле менты остаются на своих местах, т.е. там, где я их положид на форме. Мне же требуется чтобы одни элементы стали невидимы, а другие появились на их месте (по нажатию на кнопку, например).

Р>form.Controls.Add, form.Controls.Remove … ну или что там у тебя является контейнером.

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


Re[3]: Скрыть элементы на форме и показать другие на их месте в Windows Forms.

От:

vvlad.net

 
Дата:  06.05.13 11:51
Оценка:

Здравствуйте, dmitritch, Вы писали:

D>Здравствуйте, Ромашка, Вы писали:


Р>>Здравствуйте, dmitritch, Вы писали:

D>>>Использую методы Show / Hide элементов и впринципе достигаю требуемого эффекта за исключением того что эле менты остаются на своих местах, т.е. там, где я их положид на форме. Мне же требуется чтобы одни элементы стали невидимы, а другие появились на их месте (по нажатию на кнопку, например).

Р>>form.Controls.Add, form.Controls.Remove … ну или что там у тебя является контейнером.


D>Эффект тот же. А мне бы хотелось как в html, т.е прячешь див и все дивы находящиеся ниже него ползут вверх и занимают его место

Layout containers в помощь.


Re[3]: Скрыть элементы на форме и показать другие на их месте в Windows Forms.

От:

Vaako

Украина

 
Дата:  06.05.13 15:00
Оценка:

Здравствуйте, dmitritch, Вы писали:

D>Эффект тот же. А мне бы хотелось как в html, т.е прячешь див и все дивы находящиеся ниже него ползут вверх и занимают его место

А в WPF все это элементарно делается. Я перешел на WPF и доволен.


Re: Скрыть элементы на форме и показать другие на их месте в Windows Forms.

От:

Sinatr

Германия

 
Дата:  08.05.13 09:06
Оценка:

Здравствуйте, dmitritch, Вы писали:

D>Мне же требуется чтобы одни элементы стали невидимы, а другие появились на их месте (по нажатию на кнопку, например).

В winforms данный эффект можно реализовать с использованием TableLayoutPanel. Если назначить строке SizeType=AutoSize и затем сделать Visible=false для всех контролов в данной строке, то она (строка) «спрячется». Данное справедливо и для столбцов. Впрочем не без нюансов, выход — WPF.

В простейшем случае еще можно порекомендовать FlowLayoutPanel.

Ну или ручками, скажем

// спрятали
panel1.Visible = false;
panel2.Location = panel1.Location;

// показали
panel1.Visible = true;
Point p = panel1.Location;
p.Offset(panel1.Size);
panel2.Location = p;


ПроГLамеры объединяйтесь..


Re: Скрыть элементы на форме и показать другие на их месте в Windows Forms.

От:

matumba

 
Дата:  09.05.13 16:21
Оценка:

Здравствуйте, dmitritch, Вы писали:

D>Мне же требуется чтобы одни элементы стали невидимы, а другие появились на их месте

А можно узнать, что за задачу вы решаете таким смешным способом? Просто «прыгающий интерфейс» стоит на втором месте по похабщине после «плоского» интерфейса VS2012.


Re[2]: Скрыть элементы на форме и показать другие на их месте в Windows Forms.

От:

Vaako

Украина

 
Дата:  11.05.13 04:56
Оценка:

Здравствуйте, matumba, Вы писали:

M>Здравствуйте, dmitritch, Вы писали:


D>>Мне же требуется чтобы одни элементы стали невидимы, а другие появились на их месте


M>А можно узнать, что за задачу вы решаете таким смешным способом? Просто «прыгающий интерфейс» стоит на втором месте по похабщине после «плоского» интерфейса VS2012.

Не знаю не знаю, а мне интерфейс Soluto офигенно нравится.

  • Переместить
  • Удалить
  • Выделить ветку

Пока на собственное сообщение не было ответов, его можно удалить.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows 10 file explorer settings
  • Windows media player что это за папка
  • Atom n2600 windows x64
  • Что дает активация windows 10 pro
  • Windows setup select the driver to install