Проверьте, есть ли в любом текстовом поле данные, затем сделайте что-нибудь - PullRequest
0 голосов
/ 15 сентября 2018

A groupbox имеет несколько Textbox, связанных с базой данных, используя ExecuteReader Теперь я хочу сделать, если есть только один textbox не пустой, тогда все Textbox доступны только для чтения

ExecuteReader возвращает данные не такие, как ExecuteNonQuery, который возвращает количество найденных строк, поэтому я не могу получить никакого преимущества от этого

любое другое предложение?

Ответы [ 4 ]

0 голосов
/ 15 сентября 2018

Вы можете сделать это с помощью LINQ:

var textBoxes = groupbox.Controls.OfType<TextBox>();

if (textBoxes.Any(tb => !string.IsNullOrEmpty(tb.Text)))
{
    foreach (var t in textBoxes)
    {
        t.ReadOnly = true;
    }
}
0 голосов
/ 15 сентября 2018

Быстрый и грязный ответ: перечислите элементы управления в групповом окне, проверьте, являются ли они правками, если это так, проверьте, есть ли какой-либо текст в правках .. вот так

foreach (Control c in groupBox1.Controls)
  if (c is TextBox)
    if (((TextBox)c).Text.Length>0)
      {        
        // there is one textbox with text
        // .. do something, like disabling textboxes ..
        break;
      }
0 голосов
/ 15 сентября 2018

Вы можете просто циклически проходить через текстовые поля следующим образом (используя Linq):

// Collection of all text boxes
var textBoxes = groupbox.Controls.OfType<TextBox>();
// Check if one text box is not empty
bool hasText = false;
foreach (TextBox tb in textBoxes)
    hasText |= !String.IsNullOrEmpty(tb.Text);
// Set all text boxes to read only
if (hasText)
{
    foreach (TextBox tb in textBoxes) tb.ReadOnly = true;
}
0 голосов
/ 15 сентября 2018

Попробуйте:

 if (String.IsNullOrEmpty(textBox1.Text))
 {
    // Do something...
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...