Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
1

Как обратиться к контролу по индексу

02.06.2014, 12:56. Показов 3790. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C#
1
2
 int i = xxx;
 textBox [i] .Text ="dfsdfds";
как такое сделать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2014, 12:56
Ответы с готовыми решениями:

Как обратиться к контролу, зная его имя?
У меня в строке хранится имя контрола. Подскажите пожалуйста как можно обращаться к свойствам и...

Обратиться к уникальному контролу
Приветствую. Такая проблема создал коллекцию контролов, и входе работы программы пользователь будет...

Обратиться к контролу по имени, если this.Control.Find ничего не находит
Добрый день. У меня на форме есть один родительский контрол (если конкретно это NavBarControl от...

Обратиться к свойству кнопки по индексу
У меня более 50 кнопок на форме button1. button2... button50 Хотел задать в переменной string...

15
Эксперт .NET
17689 / 12874 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
02.06.2014, 13:01 2
C#
1
2
3
4
5
6
TextBox[] textBox = new TextBox[100500];
for (int i = 0; i < textBox.Length; i++)
   textBox[i] = new TextBox();
 
int i = xxx;
textBox [i] .Text ="dfsdfds";
0
2151 / 1288 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
02.06.2014, 13:01 3
создать массив котнролов или коллекцию

C#
1
2
3
4
5
6
7
8
        List<TextBox> control = new List<TextBox>();
        private void Form1_Load(object sender, EventArgs e)
        {
            control.Add(textBox1);
            control.Add(textBox2);
 
            control[1].Text = "qwe";
            control[0].Text = "324";
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
02.06.2014, 13:07  [ТС] 4
kolorotur, Metall_Version, контролы созданы не динамически ,а с помощью графического редактора ,

бегать forsearch по этой штуке private System.ComponentModel.IContainer components; как бы не хотелось бы
0
2151 / 1288 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
02.06.2014, 13:09 5
Цитата Сообщение от EVG-1980 Посмотреть сообщение
бегать forsearch по этой штуке private System.ComponentModel.IContainer components; как бы не хотелось бы
ну добавляй ручками те котроллы которые нужно в коллекцию.

в моем варианте я тоже в графическом редакторе создал контролы
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
02.06.2014, 13:15  [ТС] 6
Metall_Version, они уже добавлены к коллекцию в дизайнере форм зачем делать двойную работу?

Нужно просто что то вроде приведения типов сделать....

Добавлено через 3 минуты
C#
1
("textBox"+i as TextBox).Text = "";
почему не пашет?
0
2151 / 1288 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
02.06.2014, 13:18 7
Цитата Сообщение от EVG-1980 Посмотреть сообщение
они уже добавлены к коллекцию в дизайнере форм зачем делать двойную работу?
тогда пиши конткретно задачу что нужно обратится к любому контроллу , из всех существующих

C#
1
2
3
4
            var temp = this.Controls.OfType<TextBox>().ToList();
            int x =1;
            if (temp.Count > x)
                temp[x].Text = "qwe";
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
02.06.2014, 13:23  [ТС] 8
Цитата Сообщение от Metall_Version Посмотреть сообщение
var temp = this.Controls.OfType<TextBox>().ToList();
Это ни чем не отличается
Цитата Сообщение от Metall_Version Посмотреть сообщение
бегать forsearch по этой штуке private System.ComponentModel.IContainer components; как бы не хотелось бы
Я хотел бы обратиться к контролу напрямую как то так ("textBox"+i as TextBox).Text = "";

Не вериться что невозможно....
0
Эксперт .NET
17689 / 12874 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
02.06.2014, 13:25 9
Цитата Сообщение от EVG-1980 Посмотреть сообщение
Я хотел бы обратиться к контролу напрямую как то так ("textBox"+i as TextBox).Text = "";
Цитата Сообщение от EVG-1980 Посмотреть сообщение
textBox [i] .Text ="dfsdfds";
Так как в первом варианте или как во втором?

Если первый вариант, то так:
C#
1
this.Controls["textBox" + i].Text = "blabla";
1
2151 / 1288 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
02.06.2014, 13:27 10
Цитата Сообщение от EVG-1980 Посмотреть сообщение
Я хотел бы обратиться к контролу напрямую как то так ("textBox"+i as TextBox).Text = "";
C#
1
this.Controls["textBox" + i].Text = "";
1
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
02.06.2014, 13:27  [ТС] 11
kolorotur, во то что надо индексаторы поддерживаются

А если первый вариант?
0
Эксперт .NET
17689 / 12874 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
02.06.2014, 13:28 12

Не по теме:

Metall_Version, а я быстрее, бе-бе-бе :p



Добавлено через 32 секунды
Цитата Сообщение от EVG-1980 Посмотреть сообщение
А если первый вариант?
Если первый, то надо свой массив создавать, т.к. по умолчанию контролы не сортируются по типу.
0
2151 / 1288 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
02.06.2014, 13:29 13
Цитата Сообщение от kolorotur Посмотреть сообщение
Metall_Version, а я быстрее, бе-бе-бе
опыт видимо
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
02.06.2014, 13:31  [ТС] 14
Цитата Сообщение от kolorotur Посмотреть сообщение
Если первый, то надо свой массив создавать, т.к. по умолчанию контролы не сортируются по типу.
почему не льзя тупо string "textBox" + i привести к контролу?
0
Эксперт .NET
17689 / 12874 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
02.06.2014, 13:34 15
Лучший ответ Сообщение было отмечено EVG-1980 как решение

Решение

Цитата Сообщение от EVG-1980 Посмотреть сообщение
почему не льзя тупо string "textBox" + i привести к контролу?
Потому что "textBox1" — это строка, набор символов в памяти.
А textBox1 — это имя переменной, которое существует только до компиляции.
0
2151 / 1288 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
02.06.2014, 13:37 16
Цитата Сообщение от EVG-1980 Посмотреть сообщение
почему не льзя тупо string "textBox" + i привести к контролу?
так а тут что ?
C#
1
2
string s = "textBox" + x.ToString();
this.Controls[s].Text = "";
ага оно так не работает
0
02.06.2014, 13:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2014, 13:37
Помогаю со студенческими работами здесь

Как из модуля обратиться к контролу на форме?
Как из модуля обратиться к контролу (например, ListView1) на форме (Form1)? Form1.ListView1......

Как обратиться к контролу типа Textbox по имени и изменить его свойства
Подскажите пожалуйста как обратиться к контролу типа Textbox по имени и изменить его свойства....

ComboBox, как обратиться к списку по индексу
Здравствуйте, как будет пятая запись, пятая строка в ComboBox q=5 MsgBox...

Как в HashSet обратиться к элементу по индексу?
Как в HashSet обратиться к элементу по индексу? В ArrayList есть функция .get(index), а как в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru