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

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

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

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

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

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

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

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

19
73 / 73 / 10
Регистрация: 18.09.2012
Сообщений: 208
21.10.2012, 10:38 2
Ответы на 7 самых частых вопросов по WinForms
0
Темная сторона .Net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
21.10.2012, 10:49 3
dataGridView - вот тебе матрица из textbox
0
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
21.10.2012, 10:58  [ТС] 4
Прочитал,но ответа на свои вопрос не нашёл.
Повторю как изменять размерность двумерного массива textbox'ов? Или всё удалять и заново прорисовывать на форме? Или использовать списки?
0
90 / 90 / 15
Регистрация: 31.03.2010
Сообщений: 293
Записей в блоге: 1
21.10.2012, 11:08 5
Используй список списков.
0
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
21.10.2012, 11:24  [ТС] 6
Цитата Сообщение от rmavlasv Посмотреть сообщение
Используй список списков.
Не подскажите пожалуйста в виде кода?
0
90 / 90 / 15
Регистрация: 31.03.2010
Сообщений: 293
Записей в блоге: 1
21.10.2012, 11:31 7
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  [ТС] 8
И ещё вопросик-как в таком случае можно обратиться к элементу,например, 5,3 ?
0
90 / 90 / 15
Регистрация: 31.03.2010
Сообщений: 293
Записей в блоге: 1
21.10.2012, 16:16 9
C#
1
List_textBox[5].[3].....
1
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
21.10.2012, 17:20  [ТС] 10
rmavlasv, прошу прощения-снова вопрос. Чё-то сегодня сразу все вопросы не обдумал. Каким образом из этого списка удалить/добавить тот-же элемент
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
21.10.2012, 17:22 11
Цитата Сообщение от the_maksimka Посмотреть сообщение
Каким образом из этого списка удалить/добавить тот-же элемент
Какой тотже?
В общем ознакомтесь с методами List-а, там есть все что нужно.
1
90 / 90 / 15
Регистрация: 31.03.2010
Сообщений: 293
Записей в блоге: 1
21.10.2012, 17:58 12
создаешь сначала простой список
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  [ТС] 13
Цитата Сообщение от 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
1471 / 928 / 452
Регистрация: 06.02.2012
Сообщений: 2,846
28.10.2012, 22:05 14
Цитата Сообщение от 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  [ТС] 15
Народ,что-то я совсем не понимаю...пытаюсь выполнить
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
1471 / 928 / 452
Регистрация: 06.02.2012
Сообщений: 2,846
31.10.2012, 18:11 16
Проблема в том что, вы пытаетесь сразу наверное добавлять объект по указанному индексу. Опишите суть программы что вы хотите сделать, может есть другой вариант для вашей задачи.
0
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
31.10.2012, 20:40  [ТС] 17
Цитата Сообщение от Kazbek17 Посмотреть сообщение
Проблема в том что, вы пытаетесь сразу наверное добавлять объект по указанному индексу. Опишите суть программы что вы хотите сделать, может есть другой вариант для вашей задачи.
Надо сделать программу для оптимизации производства...т.е. есть число деталей,и число станков...если например их по 10,то создаётся матрица из textbox'ов размерностью 10 на 10,при увеличении числа станков на 1 до существующей матрицы дорисовывается ещё один столбец textbox'ов...при уменьшении соответственно удаляется...как я понял мне необходимо изменять размерность двумерного массива textbox'ов...но стандартно такая функция только для одномерного массива...для двумерного нашёл,но она не работает...и вот мне подсказали-список списков...пытался так сделать,но тоже не вышло...
Мне главное сделать добавление,удаление textbox'ов, а для этого мне надо изменять размерность двумерного массива или списка,и читать с этих textbox'ов данные...остальное уже сам буду делать...пока трудности только с этим...
0
1471 / 928 / 452
Регистрация: 06.02.2012
Сообщений: 2,846
31.10.2012, 23:18 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  [ТС] 19
Kazbek17, а когда пользователь будет изменять количество станков и деталей,необходимо будет увеличить размерность матрицы,соответственно массива...или вы предлагаете его приравнять null, а затем заново создать с другим количеством элементов?
0
1471 / 928 / 452
Регистрация: 06.02.2012
Сообщений: 2,846
01.11.2012, 08:42 20
Вам виднее как лучше, я вам только пример показал. Вот еще по вашему вопросу может поможет Как обратиться к массиву динамически созданных кнопок
1
01.11.2012, 08:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2012, 08:42
Помогаю со студенческими работами здесь

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

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

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

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


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

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