Как изменить непрозрачность определенного количества кнопок (х), не выписывая их одну за другой?(С #) - PullRequest
0 голосов
/ 27 января 2019

Я не думаю, что задал вопрос достаточно хорошо, поэтому вот объяснение.Я хочу создавать кнопки невидимым при загрузке Form1, вместо того, чтобы менять их по отдельности, есть ли способ изменить их все с меньшим количеством строк кода?

Примечание: я не хочу менять все кнопок, только определенный диапазон из них.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        button1.Visible = true;
        button2.Visible = true;
        button3.Visible = true;
        button4.Visible = true;
        button5.Visible = true;
        button6.Visible = true;
        button7.Visible = true;
    }

Под этим я подразумеваю, можно ли изменить видимость этих кнопок на true, не выписывая их одну за другой?

button1 - button7.Visible = true;

как то так ..

Ответы [ 3 ]

0 голосов
/ 27 января 2019

Вы можете использовать свойство Controls, чтобы получить все элементы управления в форме.Например:

foreach(var button in this.Controls.OfType<Button>())
{
    button.Visible = false;
}
0 голосов
/ 27 января 2019

Если вы пытаетесь изменить только определенный диапазон кнопок, предполагая, что все они просто называются кнопками [x], вы можете создать такую ​​функцию:

    private void toggleButtons(int start, int end, bool trueOrFalse)
    {
        for(int x=start; x <= end; x++)
        {
            this.Controls.OfType<Button>().Where(b => b.Name == "button" + x.ToString()).SingleOrDefault().Visible = trueOrFalse;
        }
    }

Затем вы можете вызвать еенапример, используя (startNo, endNo, true / false для видимости)

toggleButtons(1, 7, false);
0 голосов
/ 27 января 2019

Если вы хотите изменить видимость всех кнопок в форме, вы можете сделать это.

foreach(var button in Controls.OfType<Button>())
{
   button.Visible = false; // or true, depending what you want to set
}

Если вы не хотите изменять видимость всех кнопок в форме и если вам нужно отфильтровать кнопкиИсходя из некоторых критериев, вы можете сделать это.Например, если вы хотите отфильтровать кнопки, имена которых начинаются с «specialButton»,

foreach(var button in this.Controls.OfType<Button>().Where(x=>x.Name.StartsWith("specialButton")))
{
   button.Visible = false;
}

Аналогично, вы можете фильтровать и по другим свойствам.

Другой вариант - подключитькнопки, которые должны быть изменены в списке.Например, если вам нужно изменить только button1 и button2 из формы, состоящей из 10 кнопок, вы можете

var list = new[] { button1, button2 };
foreach (var item in list)
{
   item.Visible = false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...