Как получить все имена TextBox формы окна при изменении имени каждого элемента TextBox - PullRequest
1 голос
/ 26 июня 2019

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

Я много искал, но все, что я нашел, было что-то, в чемони не изменили названия текстовых полей.

var allTexboxes = this.Controls.OfType<TextBox>();
var sortedTextBoxes = allTexboxes
                     .Where(i => String.IsNullOrEmpty(i.Text))
                     .OrderBy(i => i.Name)
                     .ToArray();

1 Ответ

0 голосов
/ 26 июня 2019

Ваш пример кода и объяснение того, что вы хотите, сбивает с толку. Если вам нужен массив всех имен текстовых полей в форме:

string[] GetTexBoxNames()
{
    var names =new List<string>();
    for each(var c in this.Controls)
    {
        if(c is TextBox)
        {
            names.Add(c.name);
        }
    }
    return names.ToArray();
}

Фраза «это» относится к форме. Если вы хотите выполнить этот расчет с другой стороны формы, замените это ключевое слово переменной, ссылающейся на него.

Вы также можете использовать выражение lamda, чтобы получить все текстовые поля в массиве в одном выражении.

var textBoxNames = this.Controls
                 .Where(i => i is TextBox)
                 .ToArray();

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

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

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