powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Найти контрол по тагу.
19 сообщений из 19, страница 1 из 1
Найти контрол по тагу.
    #38955810
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу найти контрол но не перебором а с помощью LINQ.
Что то вроде этого : Parameter par = parameters.Find(delegate(Parameter p) { return p.Index == idx; });
Только не соображу как это сделать с контролом.
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38955815
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,
Как-то так:
Код: c#
1.
var matches = control.Controls.Cast<Control>().Where(x => x.Name.StartsWith("Tag"));
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38955822
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleronjenya7,
Как-то так:
Код: c#
1.
var matches = control.Controls.Cast<Control>().Where(x => x.Name.StartsWith("Tag"));


да спасибо. а потом нужно сделать кастинг? ( matches as TextBox)?
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38955828
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,
matches - это коллекция контролов, но если по одному вытаскивать и проверять, то можно и кастить, только проверить сперва
Код: c#
1.
2.
3.
4.
if (match is TextBox) 
{
   var textBox = (TextBox)match;
}
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38955834
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleronjenya7,
matches - это коллекция контролов, но если по одному вытаскивать и проверять, то можно и кастить, только проверить сперва
Код: c#
1.
2.
3.
4.
if (match is TextBox) 
{
   var textBox = (TextBox)match;
}



они все там текстбоксы. но я могу найти по тагу.
Код: c#
1.
var match = groupBoxMeasResultsRegisters.Controls.Cast<Control>().Where(x => x.Tag == (i).ToString());


по идее в колекции будет один экземпяр.
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38955837
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,
Тогда используйте FirstOrDefault() вместо Where()
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38955838
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а linq, что не перебором ищет?
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38955846
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesа linq, что не перебором ищет?
Видимо, имелось в виду что-то вроде foreach (control in controls)...
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38955848
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesа linq, что не перебором ищет?
перебором. но так код короче. аккуратнее выглядит.
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38955869
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

если нужно отфильтровать только текстбоксы, то вместо Cast следует воспользоваться методом OfType<TextBox>.
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38956066
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petalvikjenya7,

если нужно отфильтровать только текстбоксы, то вместо Cast следует воспользоваться методом OfType<TextBox>.

что то не находит.
Код: c#
1.
2.
3.
int tag  = 17;
var match = groupBoxMeasResultsRegisters.Controls.OfType<TextBox>().FirstOrDefault(x => (x.Tag == tag.ToString()));
match.Text = "found";


хотя у меня точно есть текстбокс с тагом 17.
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38956140
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7petalvikjenya7,

если нужно отфильтровать только текстбоксы, то вместо Cast следует воспользоваться методом OfType<TextBox>.

что то не находит.
Код: c#
1.
2.
3.
int tag  = 17;
var match = groupBoxMeasResultsRegisters.Controls.OfType<TextBox>().FirstOrDefault(x => (x.Tag == tag.ToString()));
match.Text = "found";



хотя у меня точно есть текстбокс с тагом 17.
17 иди "17"?
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38956157
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79jenya7пропущено...


что то не находит.
Код: c#
1.
2.
3.
int tag  = 17;
var match = groupBoxMeasResultsRegisters.Controls.OfType<TextBox>().FirstOrDefault(x => (x.Tag == tag.ToString()));
match.Text = "found";



хотя у меня точно есть текстбокс с тагом 17.
17 иди "17"?

да спасибо. левую часть тоже надо привести к строке.
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38956242
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7Arm79пропущено...

17 иди "17"?

да спасибо. левую часть тоже надо привести к строке.
Не надо.
Надо правую к целому.

Не приводите к строке "для ясности" - плохая практика.
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38956246
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7да спасибо. левую часть тоже надо привести к строке.
Что-что, простите? int 17 ToString() = "17". Левая часть у Вас не строка, а конетрол типа TextBox.
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38956370
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleronjenya7да спасибо. левую часть тоже надо привести к строке.
Что-что, простите? int 17 ToString() = "17". Левая часть у Вас не строка, а конетрол типа TextBox.
таг контрола - он стринг.
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38956377
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7таг контрола - он стринг.
Открыли Америку А нужен на выходе инумерации LINQ запроса тоже стринг или все же контрол?
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38956478
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleronjenya7таг контрола - он стринг.
Открыли Америку А нужен на выходе инумерации LINQ запроса тоже стринг или все же контрол?
ну так это и есть условие нахождения нужного контрола
Код: c#
1.
x.Tag.ToString() == tag.ToString()


если стринг равен стрингу
...
Рейтинг: 0 / 0
Найти контрол по тагу.
    #38956533
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,
Понятно, значит произошло недопонимание о какой левой и правой части выражения мы говорим.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Найти контрол по тагу.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]