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

Как из одной формы передать данные в другую?

17.10.2008, 17:23. Показов 58638. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Например, есть 2 формы:
в первой textbox1 и button1, во второй textbox2.
Необходимо при нажатии button1 перенести значение textbox1 в textbox2.
Как?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.10.2008, 17:23
Ответы с готовыми решениями:

Как передать данные с одной формы на другую?
Доброго времени суток! кратко о главном, нужно из одной формы (типа регистрации) передать данные в элемент ARRAYLIST а потом с него...

Как передать данные с одной формы на другую?
как из textBox1 с form1 предать текст в textBox1 на form2?

Как с с поля одной формы передать данные в другую
Есть список в Form1 List<t>... И есть вторая форма на которой заполняются определенные поля Вопрос: как эти поля добавить в...

27
5 / 5 / 0
Регистрация: 24.09.2008
Сообщений: 23
17.10.2008, 17:52
Можно передать ссылку на главную форму, когда создаешь дочернюю:
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
public partial class Form1 : Form
    {
        private List<string> names = new List<string>();
        private int num = 5;
        private int count; 
        Form2 frm2;
        public Form1()
        {
            InitializeComponent();
            frm2 = new Form2(this); // ****
            count = 0;
        }
 
        public void AddNameToList(string name)
        {
           names.Add(name);
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
              // shou form 2 if count <=num
            if (count <= num)
            {
                count++;
                frm2.ShowDialog();
            }
            else
            {
                MessageBox.Show("Num = 5");
            }
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            // print list
            foreach( string s in names)
            {
                textBox1.Text = textBox1.Text + s + Environment.NewLine;
            }
        }
=========================
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    public partial class Form2 : Form
    {
        private Form1 frm;
        public Form2(Form1 f)
        {
            InitializeComponent();
            frm = f;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            // enter and submit name to form1
            frm.AddNameToList(textBox1.Text);
            textBox1.Text = "";
            this.Hide();
            frm.Focus();
        }
    }
2
4 / 4 / 0
Регистрация: 17.09.2008
Сообщений: 88
17.10.2008, 19:37
или так
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 : Form
    {
        private List<string> names = new List<string>();
        private int num = 5;
        private int count; 
        Form2 frm2;
        public Form1()
        {
            InitializeComponent();
            frm2 = new Form2();
            frm2 += AddName;
            count = 0;
        }
        
        private AddName(object sender, TextEventArgs  e)
       {
            if(!string.IsNullOrEmpty(e.Text))
            AddNameToList(e.Text);
        }
 
        public void AddNameToList(string name)
        {
           names.Add(name);
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
              // shou form 2 if count <=num
            if (count <= num)
            {
                count++;
                frm2.ShowDialog();
            }
            else
            {
                MessageBox.Show("Num = 5");
            }
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            // print list
            foreach( string s in names)
            {
                textBox1.Text = textBox1.Text + s + Environment.NewLine;
            }
        }
=========================
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    public partial class Form2 : Form
    {
        public event EventHandler<TextEventArgs> ButtonClick;
 
        public Form2()
        {
            InitializeComponent();
            frm = f;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
                        
           if(null !=  ButtonClick)
            {
                ButtonClick.Invoke(new TextEventArgs(textBox1.Text) )
            }
 
            textBox1.Text = "";
            this.Hide();
            frm.Focus();
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class TextEventArgs : EventArgs
{
    private string  text;
    
    public TextEventArgs (string text)
    {
       this.text = text;
    }
 
    public string Text
   {
       get
           {
              return text;
           }
        set
           { 
               text = value;
           }
   }
}
0
0 / 0 / 0
Регистрация: 14.10.2008
Сообщений: 10
20.10.2008, 11:25  [ТС]
эээм... а можно поподробнее?
не понятно, в приведенном выше коде есть button1 и button2 в первой форме и button1 во второй форме. Но у меня всего одна кнопка в первой форме, а во второй форме нету кнопок...
0
Администратор
 Аватар для mik-a-el
87848 / 53169 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
20.10.2008, 11:35
Цитата Сообщение от Do3e Посмотреть сообщение
не понятно, в приведенном выше коде есть button1 и button2 в первой форме и button1 во второй форме. Но у меня всего одна кнопка в первой форме, а во второй форме нету кнопок...
Кнопки здесь ни при чем, это просто пример, показывающий, как могут взимодействовать формы. Изучите его и все поймете.
0
 Аватар для iceman_dfyz
1 / 1 / 2
Регистрация: 01.02.2009
Сообщений: 18
03.02.2009, 18:24
Такая же проблема, не могу передать из дочерней формы в главную массив. Создал ссылку в дочерней форме на главную:
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
  public partial class Form1 : Form
  {
 
   ...............
 
    private void toolStripMenuItem2_Click(object sender, EventArgs e)
    {
        //timer1.Stop();
        Form fm = new Form_New(this);
        fm.Show();
    }
 
  }
 
 
    public partial class Form_New : Form
    {
        .....................
        public Form frm;
 
        public Form_New(Form parent)
        {
            frm = parent;
            InitializeComponent();
        }
хотел по нажатию на кнопку дочерней формы передать массив в главную, но тут столкнулся с проблемой, что в дочерней форме видны только свойства и методы главной формы, а переменных и классов создаваемых в главной форме не видно.
0
Администратор
 Аватар для mik-a-el
87848 / 53169 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
03.02.2009, 18:27
Цитата Сообщение от iceman_dfyz Посмотреть сообщение
а переменных и классов создаваемых в главной форме не видно.
Опубликуйте их через свойства.
2
 Аватар для iceman_dfyz
1 / 1 / 2
Регистрация: 01.02.2009
Сообщений: 18
03.02.2009, 19:07
Цитата Сообщение от mik-a-el Посмотреть сообщение
Опубликуйте их через свойства.
Спасибо, до меня дошло
0
1 / 1 / 0
Регистрация: 25.03.2009
Сообщений: 23
27.03.2009, 14:15
Сори до меня не дошло?????:'(
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
27.03.2009, 14:53
C#
1
2
3
4
5
6
7
8
9
10
11
public string MyMethod
{
set
{
  label.Text = value;
}
get
{
  return label.Text;
}
}
1
274 / 200 / 33
Регистрация: 18.04.2009
Сообщений: 177
18.04.2009, 23:08
У меня вопрос по теме.
Есть Две формы, на первой, Form1, расположен элемент pictureBox1. Далее вызываю вторую форму Form2. На Form2 расположены textBox1 и textBox2. Ввожу числа (т.е. ширину и высоту pictureBox1 на Form1) в эти textBox'ы, нажимаю на кнопку OK. Вопрос: как при нажатии на кнопку OK, которая расположена на Form2 можно менять размер pictureBox1, расположенного на Form1. Если пособите кодом, буду очень признателен.
0
274 / 200 / 33
Регистрация: 18.04.2009
Сообщений: 177
20.04.2009, 00:53
Вопрос снят. Разобрался.
0
R@ZOR
02.05.2009, 21:47
Стасёнок, Можеш виложить код который у тебя работает? Буду признателен.
11 / 11 / 0
Регистрация: 23.05.2009
Сообщений: 9
06.06.2009, 16:13
певая форма с button1 и textBox1:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frmSecond = new Form2();
            frmSecond.Show(this);
        }
    }
вторая форма с textBox2:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
            
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
            Form1 frmFirst = this.Owner as Form1;
            if (frmFirst != null) textBox2.Text = frmFirst.textBox1.Text;
        }
    }
Добавлено через 11 минут 57 секунд
Цитата Сообщение от Стасёнок Посмотреть сообщение
У меня вопрос по теме.
Есть Две формы, на первой, Form1, расположен элемент pictureBox1. Далее вызываю вторую форму Form2. На Form2 расположены textBox1 и textBox2. Ввожу числа (т.е. ширину и высоту pictureBox1 на Form1) в эти textBox'ы, нажимаю на кнопку OK. Вопрос: как при нажатии на кнопку OK, которая расположена на Form2 можно менять размер pictureBox1, расположенного на Form1. Если пособите кодом, буду очень признателен.
примерно тоже самое, только вместо frmFirst.textBox1.Text (доступ к textBox1 первой формы) получаем доступ к свойствам pictureBox1:
frmFirst.pictureBox1.Height -высота
frmFirst.pictureBox1.Width -ширина

З.Ы: И не забываем устанавливать свойтво Modifiers=Public
0
1 / 1 / 0
Регистрация: 20.08.2009
Сообщений: 58
09.11.2009, 15:06
Здравствуйте. Имеется еще вопрос по этой теме. Я не совсем понял предыдущее(а может совсем не понял). Есть 2 формы, на первой находится TextBox и кнопка , которая вызывает вторую форму. На второй форме находится DataGridView и кнопка. В DataGridView выбираю строку данных и при нажатии на кнопку TextBox первой формы заполняется этими данными. Хотелось бы чтобы вторая форма была как бы инкапсулированна и работала с другими формами. Я никак не могу разобраться как нужно подписываться на событие Button_click. Помогите пожалуйста , уже 3 день голову ломаю.
Вот мой код:
Первая форма
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public partial class Dogovor : Form
    {
        public Dogovor()
        {
            InitializeComponent();
        }
 
        
 
        private void OpenClientsListButton_Click(object sender, EventArgs e)
        {
            Clients clients = new Clients();
            clients.Show();
            clients.SelectDateButton.Click += clients.selectDate;
            
        }      
    
        
    }
Вторая форма
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
public partial class Clients : Form
    {
        public event EventHandler SelectDateButtonClick;
        public Clients()
            
        {
            InitializeComponent();
            
        }
 
        DataView clientsDataView;
        
 
        private void Clients_Load(object sender, EventArgs e)
        {
            clientsTableAdapter1.Fill(sequrityDatabaseDataSet1.Clients);
            clientsDataView = new DataView(sequrityDatabaseDataSet1.Clients);
            clientsDataView.Sort = "ClientID";
            ClientsGridView.DataSource = clientsDataView;
        }
 
        internal void selectDate(object sender, EventArgs e)
        {
            string sD = ClientsGridView.SelectedCells[0].OwningRow.Cells.ToString();
            
        }
        
 
        private void SelectDateButton_Click(object sender, EventArgs e)
        {
                        
        }
0
Мохаммед Али
 Аватар для asd321
131 / 70 / 5
Регистрация: 14.08.2009
Сообщений: 916
23.11.2009, 14:34
тоже возникла такая проблема ,все понятно вроде, спасибо.
0
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
01.01.2010, 17:24
Тот же вопрос, немного не понял, если можно, объясните для тупых, имею форму 1 и на ней таблицу ListView и кнопку, которой вызываю форму 2, в которой заполняю данные и жму кнопку на этой форме, чтобы добавить введенные данные в таблицу, на я не имею доступа к ListView со второй формы, как его получить?
0
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
03.01.2010, 21:44
Все еще актуально, помогите, пожалуйста, не могу разобраться..
0
101 / 101 / 19
Регистрация: 29.12.2009
Сообщений: 204
03.01.2010, 22:11
в сообщении wWolf как раз этот случай.

смысл таков:
1. при вызове второй формы, в качестве владельца передаём указатель на первую форму:
C#
1
2
3
4
5
        private void button1_Click(object sender, EventArgs e)//кнопка на первой форме
        {
            Form2 frm2 = new Form2();
            frm2.Show(this);
        }
2. по нажатию на кнопку на второй форме, управляем контролами на первой форме через указатель, полученный из свойства Owner (именно сюда мы передали указатель на Form1 в п.1) и приведённый к типу Form1:
C#
1
2
3
4
5
        private void button1_Click(object sender, EventArgs e)//кнопка на второй форме
        {
            Form1 frm1 = (Form1)Owner;
            frm1.textBox1.Text = "текст";
        }
4
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
03.01.2010, 23:57
Спасибо, теперь не могу разобраться в ошибке "В экземпляре объекта не задана ссылка на объект."
Вот кнопка со второй формы, пытаюсь добавить итем в листвиев
C#
1
2
3
4
5
6
        private void button1_Click(object sender, EventArgs e)
        {
            Form1 f1 = (Form1)Owner; 
            string predm = Convert.ToString(textBox1.Text);
            f1.listView1.Items.Add(predm);
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.01.2010, 23:57
Помогаю со студенческими работами здесь

Передать данные из одной формы в другую
Такая интересная ситуация, есть две формы и один класс Код вот такой : форма1, на ней только таблица dataGridView1 public Form1()...

Передать данные из одной формы в другую
форма 1 public partial class Form1 : Form { public Form1() { InitializeComponent(); } ...

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

Передать данные из одной формы в другую
На первой форме есть treeView1, в котором описаны страны и города. Нужно передать выбраный город на форму2 в label1.

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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 через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru