Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/26: Рейтинг темы: голосов - 26, средняя оценка - 4.96
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176

Реализовать динамическое добавление/удаление компонентов textbox на форму

21.10.2012, 10:27. Показов 5049. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Каким образом можно реализовать динамическое добавление/удаление компонентов textbox на форму,на которой они должны быть расположены в виде матрицы?
Просто для генерации элементов использую двумерный массив
C#
1
tb = new TextBox[Convert.ToInt32(chislstank.Value), Convert.ToInt32(chisldet.Value)];
А при увеличении/уменьшении числа этих элементов на форме необходимо изменять размерность массива. Код для двумерного нашёл на хабре,но он работает только когда надо увеличить массив. Есть какие-либо другие идеи?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.10.2012, 10:27
Ответы с готовыми решениями:

Динамическое добавление компонентов на форму при изменении numericupdown
Добрый день. Столкнулся со следующей проблемой: добавляю textbox и label компоненты динамически, при увеличении значения numericupdown,...

Динамическое добавление textBox на форму
ребята такой вопрос как можно сделать так что бы когда мы нажимаем на кнопку (+) получаем еще одно поле textBox

Динамическое создание и удаление компонентов
Доброго времени суток у меня такой вопрос. мне нужно динамически создавать определенное количество textbox-ов, в зависимости от...

19
73 / 73 / 10
Регистрация: 18.09.2012
Сообщений: 208
21.10.2012, 10:38
Ответы на 7 самых частых вопросов по WinForms
0
Темная сторона .Net
 Аватар для Noob.net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
21.10.2012, 10:49
dataGridView - вот тебе матрица из textbox
0
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
21.10.2012, 10:58  [ТС]
Прочитал,но ответа на свои вопрос не нашёл.
Повторю как изменять размерность двумерного массива textbox'ов? Или всё удалять и заново прорисовывать на форме? Или использовать списки?
0
 Аватар для rmavlasv
90 / 90 / 15
Регистрация: 31.03.2010
Сообщений: 293
Записей в блоге: 1
21.10.2012, 11:08
Используй список списков.
0
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
21.10.2012, 11:24  [ТС]
Цитата Сообщение от rmavlasv Посмотреть сообщение
Используй список списков.
Не подскажите пожалуйста в виде кода?
0
 Аватар для rmavlasv
90 / 90 / 15
Регистрация: 31.03.2010
Сообщений: 293
Записей в блоге: 1
21.10.2012, 11:31
the_maksimka,
C#
1
List<List<TextBox>> List_textBox = new List<List<TextBox>>();
1
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
21.10.2012, 16:14  [ТС]
И ещё вопросик-как в таком случае можно обратиться к элементу,например, 5,3 ?
0
 Аватар для rmavlasv
90 / 90 / 15
Регистрация: 31.03.2010
Сообщений: 293
Записей в блоге: 1
21.10.2012, 16:16
C#
1
List_textBox[5].[3].....
1
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
21.10.2012, 17:20  [ТС]
rmavlasv, прошу прощения-снова вопрос. Чё-то сегодня сразу все вопросы не обдумал. Каким образом из этого списка удалить/добавить тот-же элемент
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
21.10.2012, 17:22
Цитата Сообщение от the_maksimka Посмотреть сообщение
Каким образом из этого списка удалить/добавить тот-же элемент
Какой тотже?
В общем ознакомтесь с методами List-а, там есть все что нужно.
1
 Аватар для rmavlasv
90 / 90 / 15
Регистрация: 31.03.2010
Сообщений: 293
Записей в блоге: 1
21.10.2012, 17:58
создаешь сначала простой список
C#
1
List<TextBox> List_tBox = new List<TextBox>();
потом в него добавляешь TextBox, далее добавляешь этот список в список списков
C#
1
List_textBox.Add(List_tBox);
Если например нужно будет вставить элемент [2,5], то пишешь,
C#
1
List_textBox[2].Insert(5,TextBox);
Если например нужно будет удалить элемент [2,5], то пишешь,
C#
1
List_textBox[2].RemoveAt(5);
2
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
28.10.2012, 21:44  [ТС]
Цитата Сообщение от rmavlasv Посмотреть сообщение
C#
1
2
List<List<TextBox>> List_textBox = new List<List<TextBox>>();
List_textBox[2].Insert(5,TextBox);
Ошибка 1 "System.Windows.Forms.TextBox" является "тип", но используется как "переменная"
0
 Аватар для Kazbek17
1483 / 938 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
28.10.2012, 22:05
Цитата Сообщение от the_maksimka Посмотреть сообщение
Ошибка 1 "System.Windows.Forms.TextBox" является "тип", но используется как "переменная"
Ясно понятно что будет ругаться. Вот так нужно.
C#
1
2
List<List<TextBox>> List_textBox = new List<List<TextBox>>();
            List_textBox[2].Insert(5, (new TextBox()));
2
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
30.10.2012, 17:24  [ТС]
Народ,что-то я совсем не понимаю...пытаюсь выполнить
C#
1
2
3
4
5
for (int i = 1; i < 10; i++)
                for (int j = 1; j < 10; j++)
                {
                    List_textBox[i].Insert(j, (new TextBox()));
                }
выдаёт
Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.

Добавлено через 24 минуты
Причём после первого прохода цикла...

Добавлено через 19 часов 5 минут
Kazbek17, rmavlasv, не знаете в чём может быть проблема?
0
 Аватар для Kazbek17
1483 / 938 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
31.10.2012, 18:11
Проблема в том что, вы пытаетесь сразу наверное добавлять объект по указанному индексу. Опишите суть программы что вы хотите сделать, может есть другой вариант для вашей задачи.
0
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
31.10.2012, 20:40  [ТС]
Цитата Сообщение от Kazbek17 Посмотреть сообщение
Проблема в том что, вы пытаетесь сразу наверное добавлять объект по указанному индексу. Опишите суть программы что вы хотите сделать, может есть другой вариант для вашей задачи.
Надо сделать программу для оптимизации производства...т.е. есть число деталей,и число станков...если например их по 10,то создаётся матрица из textbox'ов размерностью 10 на 10,при увеличении числа станков на 1 до существующей матрицы дорисовывается ещё один столбец textbox'ов...при уменьшении соответственно удаляется...как я понял мне необходимо изменять размерность двумерного массива textbox'ов...но стандартно такая функция только для одномерного массива...для двумерного нашёл,но она не работает...и вот мне подсказали-список списков...пытался так сделать,но тоже не вышло...
Мне главное сделать добавление,удаление textbox'ов, а для этого мне надо изменять размерность двумерного массива или списка,и читать с этих textbox'ов данные...остальное уже сам буду делать...пока трудности только с этим...
0
 Аватар для Kazbek17
1483 / 938 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
31.10.2012, 23:18
А обязательно все это дело через List<>? может просто воспользоваться массивом

C#
1
TextBox [,] tx = new TextBox[ваше кол-во объектов]
можно 3 мерный сделать если добавите знак "," в скобки. А потом динамических их создать.
например так.
C#
1
2
3
4
5
6
7
8
9
10
TextBox [,] tx = new TextBox[5]
 
tx = new TextBox();
for(int=0; i< 5; i++)
{
 tx[i].Name = "TextBox" + i;
 tx[i].Text =  "Текст" + i;
 tx[i].Location = new Point(100 * i);
 this.Controls.Add(tx[i]);
}
Так же можно и удалить.
0
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
01.11.2012, 05:09  [ТС]
Kazbek17, а когда пользователь будет изменять количество станков и деталей,необходимо будет увеличить размерность матрицы,соответственно массива...или вы предлагаете его приравнять null, а затем заново создать с другим количеством элементов?
0
 Аватар для Kazbek17
1483 / 938 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
01.11.2012, 08:42
Вам виднее как лучше, я вам только пример показал. Вот еще по вашему вопросу может поможет Как обратиться к массиву динамически созданных кнопок
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.11.2012, 08:42
Помогаю со студенческими работами здесь

Динамическое создание и удаление компонентов
Есть код на VB6 Dim RowQuantity As integer Private Sub ChkAutoN_Click() ' Включение\выключение автонумерации чекбоксом ...

Динамическое добавление textBox ов
Увидел в одной программе вот такое подскажите как это можно реализовать

Динамическое добавление TextBox в GroupBox
Подскажите пожалуйста что не так TextBox txt = new TextBox(); mtx.Container.Add(txt); ...

Динамическое добавление элементов на форму
FAQ читал, но этот вариант не устраивает тем что он добавляет все 10 textbox при однократном нажатии на кнопку. TextBox tb = new...

Динамическое добавление DataGridView на форму
Подскажите, пожалуйста, как динамически добавить DataGridView. Зарание извините за повтор, может проблемы со зрением, но не нашла похожей...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru