Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
3 / 2 / 1
Регистрация: 14.09.2016
Сообщений: 501
.NET 4.x

Передача массивов из одной формы в другую

18.09.2018, 14:59. Показов 2095. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть форма 1 и форма 2.
Начнем с формы 2. Я хочу из формы 1, взять массивы, значения всякие ну и кароче вот так написал:

C#
1
2
3
4
5
6
7
8
9
10
public partial class Form2 : Form
    {
 
        Form1 ButtonShow;
 
        
        public Form2(Form1 form1)
        {
            ButtonShow= form1;
            InitializeComponent();
Ну и теперь в форме 2 можно брать элементы массива первой формы.

Но также, мне надо будет потом взять и из второй формы элементы массива в первую.
Я опять так же делаю, в первой форме:

C#
1
2
3
4
5
6
7
8
 Form2 createTests;
      
        public Form1(Form2 form2)
        {
            createTests = form2;
            InitializeComponent();
     
        }
Но пишет ошибку:

Ошибка CS7036 Отсутствует аргумент, соответствующий требуемому формальному параметру "form2" из "Form1.Form1(Form2)".

Как исправить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.09.2018, 14:59
Ответы с готовыми решениями:

Передача из одной формы в другую
Всем привет! У меня есть две формы, в каждой форме есть одномерный массив текстбоксов. Собственно, как передать текст из одного массива...

Передача информации из одной формы в другую
Этот код находиться в 1 форме для открытии информацыии и нужно ,что б он открылся на 2 форме в RichTextBox1 как это реализовать помогите. ...

Передача данных из одной формы на другую
Всем добрый вечер. Пытаюсь передать данные из одной формы(TextBox и ComboBox) на вторую форму(DataGridView). На форуме нашла пример, но...

7
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
18.09.2018, 15:02
вы соми создали конструктор с параметром но параметр не передаете вот и ошибка
1. вариант public Form1(Form2 form2 == null)
2. вариант еще 1 конструктор
public Form1()
{
InitializeComponent();

}
3. вариант Form2 createTests; сделать публичной и присваивать после создания формы
0
3 / 2 / 1
Регистрация: 14.09.2016
Сообщений: 501
18.09.2018, 15:14  [ТС]
Цитата Сообщение от Wolflind Посмотреть сообщение
2. вариант еще 1 конструктор
public Form1()
{
InitializeComponent();
}
То-есть так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public partial class Form1 : Form
    {
      
      Form2 createTests;
      
        public Form1(Form2 form2)
        {
            createTests = form2;
          
            
        }
        public Form1()
        {
            InitializeComponent();
 
        }
И можно будет брать из второй формы массивы да?
0
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
18.09.2018, 15:18
это тоже самое что ваш код просто реализации немного другая
вообще так делать не красиво
но если массив публичный то да
0
3 / 2 / 1
Регистрация: 14.09.2016
Сообщений: 501
18.09.2018, 15:23  [ТС]
Цитата Сообщение от Wolflind Посмотреть сообщение
но если массив публичный то да
C#
1
2
3
4
5
6
7
private void start_Click(object sender, EventArgs e)
        {
 
            qsn.Text = createTests.klausimai[0];
            
           
        }
Ссылка на объект не указывает на экземпляр объекта.

Хотя во второй форме он публично указан

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public partial class Form2 : Form
    {
 
        Form1 ButtonShow;
 
        public string[] klausimai;
 
 
        public Form2(Form1 form1)
        {
            ButtonShow= form1;
            InitializeComponent();
}
0
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
18.09.2018, 15:29
а где объявления klausimai?

Добавлено через 21 секунду
и точней пишите там 3 таких ошибки могут быть

Добавлено через 23 секунды
1.createTests.
2.klausimai
3.qsn
0
3 / 2 / 1
Регистрация: 14.09.2016
Сообщений: 501
18.09.2018, 15:41  [ТС]
Wolflind,
Форма 2:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace tests
{
    public partial class Form2 : Form
    {
 
        Form1 ButtonShow;
 
       
        public int kiek;
      
        public TextBox[] questions; 
        public TextBox[] answers; 
        Label[] lquestions;
        Label[] lanswers;
 
        public string[] klausimai;
        public string[] atsakymai;
 
 
        public Form2(Form1 form1)
        {
            ButtonShow= form1;
            InitializeComponent();
            kiek = 0;
            //MessageBox.Show(kiek.ToString(), "Test");
 
            this.Width = 413;
            this.Height = 85;
          
            questions = new TextBox[] { textBox1, textBox2, textBox3, textBox4, textBox5, textBox6, textBox7, textBox8, textBox9, textBox10, textBox11, textBox12, textBox13, textBox14, textBox15, textBox16, textBox17, textBox18, textBox19, textBox20 };//инициализируем
            answers = new TextBox[] { textBox21, textBox22, textBox23, textBox24, textBox25, textBox26, textBox27, textBox28, textBox29, textBox30, textBox31, textBox32, textBox33, textBox34, textBox35, textBox36, textBox37, textBox38, textBox39, textBox40 };//инициализируем
            lquestions = new Label[] { label1, label2, label3, label4, label5, label6, label7, label8, label9, label10, label11, label12, label13, label14, label15, label16, label17, label18, label19, label20 }; //инициализируем
            lanswers = new Label[] { label21, label22, label23, label24, label25, label26, label27, label28, label29, label30, label31, label32, label33, label34, label35, label36, label37, label38, label39, label40 };//инициализируем
        }
        private int KiekTUriButi;
 
        private void AddLines_Click(object sender, EventArgs e)
        {
            int tikrinti = 0;
            Int32.TryParse(ivestasSK.Text, out tikrinti);
            if (tikrinti >= 20 || tikrinti < 2)
            {
                MessageBox.Show("Число не может быть меньше 2 и больше 20!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                LabelKiekIvesti.Visible = false;
                ivestasSK.Visible = false;
                AddLines.Visible = false;
 
                this.Width = 705;
                this.Height = 655;
 
                Int32.TryParse(ivestasSK.Text, out kiek);
                
                klausimai = new string[kiek];
 
                KiekTUriButi = tikrinti;
                for (int i = 0; i < kiek; i++)
                {
                    questions[i].Visible = true;
                    answers[i].Visible = true;
 
                    lquestions[i].Visible = true;
                    lanswers[i].Visible = true;
 
                }
                Patvirtinti.Visible = true;
            }
        }
 
        public int masilgis;
        private void Patvirtinti_Click(object sender, EventArgs e)
        {
         
 
            bool questionsOk = true;
            bool answerOk = true;
 
 
            for (int i = 0; i < KiekTUriButi; i++)
            {
                if (string.IsNullOrWhiteSpace(answers[i].Text) || string.IsNullOrWhiteSpace(questions[i].Text))
                {
                    answerOk = false;
                    questionsOk = false;
                    break;
                }
            } 
 
            if (!questionsOk || !answerOk)
            {
                MessageBox.Show("Текстовые поля не могут быть пустыми.", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
 
                masilgis = klausimai.Length;
              
                atsakymai = new string[kiek];
                for (int i = 0; i < klausimai.Length; i++)
                {
                    klausimai[i] = questions[i].Text;
                    atsakymai[i] = answers[i].Text;
                }
              
                MessageBox.Show("Успешно сохранено", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
              
                ButtonShow.start.Visible = true;
                this.Close();
 
            }
        }
    }
}
Создается она в private void AddLines_Click(object sender, EventArgs e)
Чтобы когда я пишу в texbox сколько вопросов отобразить ( kiek переменая), сразу дать длину массиву klausimai = new string[kiek];
А дальше, заполняю textbox'ы и всю инфу записываю в private void Patvirtinti_Click(object sender, EventArgs e),
klausimai[i] = questions[i].Text; klausimai - это вопросы если перевести. И в нем будут хранится вопросы.
0
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
18.09.2018, 19:25
зачем текст переписывать в отдельный массив не проще ли обратится просто в textbox
делается так

C#
1
2
3
4
public string[] klausimai
{
    get => questions[i].Select(x => x.Text);
}
в некотором смысле это тоже самое но проще
можно сократить так
C#
1
public string[] klausimai => questions[i].Select(x => x.Text);
а в вашем случаи до нажатия Patvirtinti_Click или AddLines_Click в klausimai будит null
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.09.2018, 19:25
Помогаю со студенческими работами здесь

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

Передача с одной формы в другую и обратно
Ребята такой вопрос. Не получается правильно прописать передачу данных с одной формы в другую и обратно. Суть заключается в том что...

Передача данных из одной формы в другую
Привет! Может сможет кто-то помочь, нужно по заданию сделать ограничение на длину пароля пользователя, чтобы была не меньше длинны,...

Передача данных из одной формы в другую
Знаю, вопрос заезженный , но мне нужна помощь. Нужно данные вводимые пользователем в форме 2 связать с элементами формы 1 . Как это...

Передача переменных из одной формы в другую
Знаю, тема избитая, но прочтение статьи &quot;7 самых частых вопросов...&quot; и множества подобных не дало результата. Или я чего-то конкретно не...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru