Как показать все скрытые элементы управления формы в C #? - PullRequest
1 голос
/ 22 декабря 2011

В окне формы C #, скажем, у меня есть 5 элементов управления.Я только что спрятал некоторые из них.Когда я запускаю программу, должны появиться только элементы управления (Visible = true).Я хочу нажать на кнопку, чтобы отобразить или показать все элементы управления.Как я могу это сделать?

Ответы [ 6 ]

4 голосов
/ 22 декабря 2011

Для Winforms, попробуйте это:

foreach (Control c in Controls) {
    c.Visible = true;
}

Этот код перебирает все элементы управления в вашей форме и устанавливает для свойства Visible значение true, чтобы сделать каждый элемент видимым.

2 голосов
/ 22 декабря 2011

Вы можете сделать это рекурсивным, тогда, если у вас есть какие-либо панели / групповые блоки, их дети тоже будут видны.

public void MakeVisible(Control control)
{
    if(control.HasChildren)
    {
        foreach (Control child in control.Controls)
        {
            MakeVisible(child);
        }
    }
    control.Visible = true;
}
2 голосов
/ 22 декабря 2011

Вам нужно изменить видимую собственность в коде позади.

, например

button1.visible = true;

и сделайте это для каждого скрытого элемента управления, кнопки или нет.

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

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

1 голос
/ 22 декабря 2011

Что-то вроде

foreach (var controlObj in form.Controls)
    ((Control)controlObj).Visible = True;

должно сработать.Это просто показывает все элементы управления в форме.(Обратите внимание, что Form.Controls - это нетипизированная коллекция, содержащая только Object s, поэтому вы должны разыграть их в воздухе)

Если у вас есть только 5 элементов управления, вы также можете показать их по отдельности, возможно, с помощью метода

void showHiddenControls(bool show) {
  control1.Visible = show;
  control2.Visible = show;
  // ...
}

Это имеет то преимущество, что вы можете показать их, используя showHiddenControls(true), и скрыть их снова, используя showHiddenControls(false).

1 голос
/ 22 декабря 2011

Если вы хотите все скрыть / показать,

    foreach (Control cr in this.Controls)
        cr.Visible = false; // or true, if you want to show everything
0 голосов
/ 22 декабря 2011

Основная идея заключается в создании таких объектов:

Label toto = new Label():
(...) Do whatever you wan't to initialize your object
toto.Visible = false;

Button makeItAppear = new Button();
(..) Do whatever you wan't to initialize this button

А затем добавьте обработчик для события click:

makeItAppear.Click += new System.EventHandler(MakeItAppear);

А потом в EventHandler:

private void MakeItAppear(object sender, EventArgs e)
{
    this.toto.Visible = true;
}

Лучше всего было бы создать функцию, которая заставляет это появляться и которая вызывается обработчиком. И, конечно, если у вас есть несколько объектов, которые могут появиться или исчезнуть, проделайте то же самое для всех в этой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...