Выберите несколько текстовых полей на панели - PullRequest
0 голосов
/ 24 сентября 2019

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

if(textbox1.Text != "" && textbox2.Text != "" ...) 
{
    ...
}

Есть ли способ автоматизировать это и улучшить общее качество самого кода?

Ответы [ 2 ]

2 голосов
/ 24 сентября 2019

Это можно сделать очень просто, используя OfType и All методы расширения из System.Linq.

var panel = new Panel
{
    Size = new Size(500, 500),
    BackColor = Color.Red
};

panel.Controls.Add(new TextBox { Text = "Value" });
panel.Controls.Add(new TextBox { Text = "Value2" });

if (panel.Controls.OfType<TextBox>().All(x => !string.IsNullOrEmpty(x.Text)))
{
    //Do something
}

Код в операторе if будет выполняться только при условии, что все свойства Text TextBoxes выполнены со всеми свойствами Text.не пустые.

0 голосов
/ 24 сентября 2019

Вы можете использовать методы расширений Linq, чтобы получить все текстовые поля панели, где свойство Text не пустое:

using System.Linq;

var textboxes = panel.Controls.OfType<TextBox>().Where(c => c.Text != "");

foreach ( TextBox textbox in textboxes )
{
  // ...
}

Если вы хотите проверить, все ли они не пустые, используйте это:

if ( panel.Controls.OfType<TextBox>().All(c => c.Text != "") )
{
  // ...
}
...