Каков простой способ установить пустое текстовое поле ("") в нулевое значение в WinSform Csharp? - PullRequest
2 голосов
/ 23 сентября 2011

Предположим, я не хочу использовать

if (string.IsNullOrEmpty(textbox1.Text))
{
     textbox1.Text = null;
}

для каждого элемента управления текстового поля в форме, есть ли более простой способ сделать это?

Ответы [ 5 ]

3 голосов
/ 01 октября 2011

Это еще один способ

foreach(Control txt in this.Controls)
{
   if(txt.GetType() == typeof(TextBox))
         if(string.IsNullOrEmpty(txt.Text))
            txt.Text = null;
}

Надеюсь, это поможет

3 голосов
/ 23 сентября 2011

Простой способ пройти через все элементы управления, см. Код ниже

 foreach (Control C in this.Controls)
 {
       if (C is TextBox)
       {
            if (C.Text == "")
            {
                 C.Text = null;
             }
       }
 }
2 голосов
/ 23 сентября 2011

Вы можете перебирать ControlCollection данной формы, например, frmMain.Controls
Теперь это будет базовый объект Control, поэтому вам нужно проверить, имеет ли он тип TextBox.

.NET 2.0 - вам придется проверить это вручную
.NET 3.0+ - используйте метод расширения .OfType<TextBox>, чтобы получить только список IEnumerable<TextBox>

Обратите внимание, что повторение этого в форме даст вам только текстовые поля в этой форме. Если вы прикрепите текстовые поля к контейнеру, он там не будет отображаться.

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

1 голос
/ 23 сентября 2011

Попробуйте это:

foreach(Control c in this.Controls)
{
      if (c.GetType().FullName == "System.Windows.Forms.TextBox")
      {
          TextBox t = (TextBox)c;
          t.Clear();
      }
}
0 голосов
/ 23 сентября 2011

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

...