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


да спасибо. а потом нужно сделать кастинг? ( matches as TextBox)?
...
Рейтинг: 0 / 0
11.05.2015, 17:04
    #38955828
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти контрол по тагу.
jenya7,
matches - это коллекция контролов, но если по одному вытаскивать и проверять, то можно и кастить, только проверить сперва
Код: c#
1.
2.
3.
4.
if (match is TextBox) 
{
   var textBox = (TextBox)match;
}
...
Рейтинг: 0 / 0
11.05.2015, 17:18
    #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
11.05.2015, 17:23
    #38955837
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти контрол по тагу.
jenya7,
Тогда используйте FirstOrDefault() вместо Where()
...
Рейтинг: 0 / 0
11.05.2015, 17:29
    #38955838
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти контрол по тагу.
а linq, что не перебором ищет?
...
Рейтинг: 0 / 0
11.05.2015, 17:46
    #38955846
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти контрол по тагу.
Roman Mejtesа linq, что не перебором ищет?
Видимо, имелось в виду что-то вроде foreach (control in controls)...
...
Рейтинг: 0 / 0
11.05.2015, 17:48
    #38955848
jenya7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти контрол по тагу.
Roman Mejtesа linq, что не перебором ищет?
перебором. но так код короче. аккуратнее выглядит.
...
Рейтинг: 0 / 0
11.05.2015, 18:22
    #38955869
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти контрол по тагу.
jenya7,

если нужно отфильтровать только текстбоксы, то вместо Cast следует воспользоваться методом OfType<TextBox>.
...
Рейтинг: 0 / 0
12.05.2015, 09:08
    #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
12.05.2015, 10:38
    #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
12.05.2015, 10:47
    #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
12.05.2015, 11:51
    #38956242
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти контрол по тагу.
jenya7Arm79пропущено...

17 иди "17"?

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

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


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


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