Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
 Аватар для Pleo
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 7

Создать двумерный массив из TextBox

16.05.2013, 14:43. Показов 5107. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день. У меня возникла проблема с обновлением двумерного массива Textbox'ов.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
   
private void button2_Click(object sender, EventArgs e)
{
       Random rand = new Random(); 
       int n = rand.Next(10)+1;         //генерация n
 
       var arr = new int[n, n];                     //Массив n x n  
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    arr[i, j] = rand.Next(1001);        //Заполнение массива случайными числами от 0 до 1000
                }
            }
 
  var tb = new TextBox[n, n];                          //объявление массива TextBox'ов
    for (int i = 0; i < n; i++)
                {
                    for (int j = 0; j < n; j++)
                    {
                        tb[i, j] = new System.Windows.Forms.TextBox();
                        tb[i, j].Location = new System.Drawing.Point(30 + j * 30, 140 + i * 20);
                        tb[i, j].Name = "textBox" + i.ToString();
                        tb[i, j].Size = new System.Drawing.Size(30, 20);
                        tb[i, j].TabIndex = i;
                        tb[i, j].Text = (arr[i,j]).ToString();
                        Controls.Add(tb[i, j]);
                    }
                }
 
}
Результат: после первого нажатия клавиши, TextBox'ы создаются и заполняются элементами массива. После второго нажатия, массив генерируется заново, но TextBox'ы они уже не обновляются, хотя если n увеличивается то добавляется нужное количество недостающих TextBox'ов.
Хотелось бы, чтобы после каждого нажатия клавиши TextBox'ы забивались заново, и нужными элементами.

Есть предположение, что они все-таки создаются, но рисуются под самым первым массивом. А опыта на C# не хватает, чтобы их "достать".

Вообще говоря, мне нужно просто вывести постоянно обновляемый двумерный целочисленный массив на экран (любыми средствами). Если предложите какой-нибудь другой способ (не массив TextBox'ов), тоже будет неплохо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.05.2013, 14:43
Ответы с готовыми решениями:

Создать двумерный массив String из текста в TextBox
Хочу символы из строки (textBox) запилить в двумерный массив типа String. Помогите, вопрос жизни и смерти!

Создать двумерный массив TextBox-ов: как правильно использовать Name и TabIndex
Как это можно сделать ? С одномерныйм ещё более мнеее понятно . А вот с двумерным проблемы: TextBox tb = new TextBox; ...

Создать двумерный массив в диапазоне чисел, который задается двумя textbox
На форме (полноэкранной) создаетcя массив текстовых полей (20x15) в которых будут отображаться элементы массива. Массив заполняется...

3
 Аватар для MrGladus
178 / 178 / 50
Регистрация: 06.01.2013
Сообщений: 392
16.05.2013, 14:51
Обратиться ко всем текстбоксам можно так:
C#
1
2
3
4
foreach (var textBox in Controls.OfType<TextBox>())
            {
                textBox.Text = string.Empty;
            }
А не лучше вам бы использовать елемент dataGridView для вывода постоянно обновляемого целочисленного массива?
0
4 / 4 / 4
Регистрация: 13.05.2013
Сообщений: 13
16.05.2013, 15:01
Создаёшь массив (не в методе, а в классы формы) из текстбоксов, в методе проверяешь, является ли его длина 0, если да, то генерируешь массив, а если нет, то просто изменяешь textbox.Text.

Примерно такой код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public partial class Form1
{
    private TextBox[] textboxes = new TextBox[0];
 
    // Тут другие объявления переменных, методы...
 
    private void button2_Click(object sender, EventArgs e)
    {
        Random rand = new Random(); 
        int n = rand.Next(10)+1; // Генерация n
 
        var arr = new int[n, n]; // Массив n x n  
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                arr[i, j] = rand.Next(1001); // Заполнение массива случайными числами от 0 до 1000
            }
        }
 
        if (textboxes.Length == 0)
        {
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    textboxes[i, j] = new System.Windows.Forms.TextBox();
                    textboxes[i, j].Location = new System.Drawing.Point(30 + j * 30, 140 + i * 20);
                    textboxes[i, j].Name = "textBox" + i.ToString();
                    textboxes[i, j].Size = new System.Drawing.Size(30, 20);
                    textboxes[i, j].TabIndex = i;
                    textboxes[i, j].Text = (arr[i,j]).ToString();
                    Controls.Add(textboxes[i, j]);
                }
            }
        }
        else
        {
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    textboxes[i, j].Text = (arr[i,j]).ToString();
                }
            }
        }
    }
}
Ну или использовать для доступа к текстбоксам то, что сказал MrGladus...
0
 Аватар для Pleo
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 7
16.05.2013, 20:21  [ТС]
Цитата Сообщение от MrGladus
Обратиться ко всем текстбоксам можно так:
C#
1
2
3
4
foreach (var textBox in Controls.OfType<TextBox>())
            {
                textBox.Text = string.Empty;
            }
Это конечно неплохой способ, но только в том случае, если никаких TextBox'ов больше нет. У меня они есть. Этот кусок кода - всего лишь часть задачи.

Цитата Сообщение от ArtSin
Создаёшь массив (не в методе, а в классы формы) из текстбоксов, в методе проверяешь, является ли его длина 0, если да, то генерируешь массив, а если нет, то просто изменяешь textbox.Text.
C#
1
2
3
4
5
6
7
8
 if (textboxes.Length == 0)
        {
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    textboxes[i, j] = new System.Windows.Forms.TextBox();
                    ....
Чтоо? Вот этот кусок кода уже не должен работать: если длина массива = 0, то как заполнить весь массив n x n? Тем более массив нужен двумерный, а Length - это свойство только одномерных массивов. Так что этот вариант тоже не подходит.

Цитата Сообщение от MrGladus
А не лучше вам бы использовать элемент dataGridView для вывода постоянно обновляемого целочисленного массива?
Похоже так и придется делать. Буду разбираться с этой штукой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.05.2013, 20:21
Помогаю со студенческими работами здесь

textbox и двумерный массив
Предположим, пользователь вводит определенную последовательность символов, визуально представляемую, как двумерный массив (прим. -...

Двумерный массив textbox
Здравствуйте. У меня c помощью двух textbox задается размерность матрицы. Далее при нажатии на кнопку1 на форме c помощью textbox`ов...

Считать двумерный массив из Textbox-a
Нужно считать двумерный массив из TextBox-a в int. Помогите пожалуйста если не кодом, то советом.

Создать двумерный массив, опираясь на другой двумерный массив
У меня есть такой массив 0 0 0 0 0 0 0 6 3 2 2 8 9 3 7 6 8 3 4 5 1 0 0 0 0 0 0 0 0 0 0 0 0...

Двумерный массив TextBox
Необходимо задать двумерный массив 3*3 и одномерный массив 3 с помощью textbox в windowsForms В итоге задаю массив. Все читается, а когда...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru