Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/335: Рейтинг темы: голосов - 335, средняя оценка - 4.57
1 / 1 / 1
Регистрация: 20.02.2010
Сообщений: 65

Передача данных между формами

04.04.2012, 02:14. Показов 69145. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
У меня тут образовалась одна вроде и простая проблемка, однако я в полнейшем тупике.
В общем такая тема: есть 2 формы. В первой нажимаем на кнопку, появляется вторая, там выбираются данные, которые успешно запоминаются. Необходимо, чтобы после нажатия кнопки ОК во второй форме, в textBox первой уже высвечивалось выбранное значение...
Как-то так =(
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.04.2012, 02:14
Ответы с готовыми решениями:

передача данных между формами
Есть форма№1 со справочником валют, форма№2 Курсы валют. Из курсов валют вызывается форма№1 для выбора валют(например при добавлении)....

Передача данных между формами
У меня такая проблема. Нужно сделать так: Form1 вызывает Form2. На Form2 находиться кнопка button, при нажатии на которую данные из textBox...

Передача данных между формами
Добрый день. У меня есть 2 формы на одной форме в textbox'ах задаются случайные числа, мне нужно сделать так, что бы при открытии второй...

13
20 / 19 / 0
Регистрация: 04.04.2012
Сообщений: 31
04.04.2012, 07:39
Не самый правильный способ, но вам, думаю, подойдет.
В первой (основной) форме перед тем, как откроете дочернюю форму, подпишитесь на событие Click кнопки ОК на второй форме. Пример ниже:
C#
1
2
3
4
5
6
Form SlaveForm = new Form();
SlaveForm.buttonOK.Click += (senderSlave, eSlave) =>
{
this.textBox1.Text = SlaveForm.textBox2.Text;
};
SlaveForm.Show();
Для этого нужно, чтобы у кнопки и текстбокса на второй форме имели модификаторы доступа public
2
49 / 49 / 5
Регистрация: 11.07.2011
Сообщений: 282
04.04.2012, 09:26
Если данных много, то можно использовать статический класс. Вообще, это очень удобно.
При вводе данных со второй формы заносим данные в поля статического класса. При закрытии второй формы вносим необходимые значения в первую форму.
0
7 / 7 / 0
Регистрация: 28.03.2012
Сообщений: 26
04.04.2012, 09:32
Можете пример показать ?
0
 Аватар для tofers
30 / 30 / 10
Регистрация: 07.10.2011
Сообщений: 204
04.04.2012, 09:53
Форма 1
C#
1
2
3
4
5
6
7
8
// вызываем 2ую форму 
private void SetButton_Click(object sender, EventArgs e)
        {
 
            SetDlg setDlg = new SetDlg();
            setDlg.ShowDialog();
            if (setDlg.DialogResult == DialogResult.OK) textBox1.Text = setDlg.ReturnData(); // принимаем результат с 2ой формы в текстбокс1
        }
Форма 2
C#
1
2
3
4
5
6
7
8
9
10
 private void OK_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.OK;  // если нажато на ОК передаем..
        }
 
        //..текстовому полю данной формы  
        public string ReturnData()
        {
            return (Kolvo.Text); // Kolvo - название TextBox можно задать любое
        }
2
20 / 19 / 0
Регистрация: 04.04.2012
Сообщений: 31
04.04.2012, 09:55
Пример статического класса
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
public static class StatClass
{
//Данная переменная статического класса будет доступна откуда угодно в пределах проекта
public static String simpleString = "Тестовая строка";
}
 
public class Form1:Form
{
...
public void button1_Click(object sender, EventArgs e)
{
Form2 Frm = new Form2();
//Форма откроется как диалог и все, что ниже Frm2.ShowDialog(), выполнится только после закрытия
Frm2.ShowDialog();
textBox1.Text = StatClass.simpleString;
}
...
}
 
public class From2:Form
{
...
public void frm2Button_Click(object sender, EventArgs e)
{
//В статический класс пишется значение текстбокса из второй формы
StatClass.simpleString = frm2TextBox.Text;
}
...
 
}
2
49 / 49 / 5
Регистрация: 11.07.2011
Сообщений: 282
04.04.2012, 09:55
Ну а что тут показывать?
создаем статический класс:

C#
1
2
3
4
5
6
7
     public static class Info
    {
        //наши данные
        public string Name { get; set; }
        public string LastName { get; set; }
        public string SecName { get; set; }
    }
а затем в любой момент присваиваем нужное значение нужному полю, либо извлекаем его оттуда.
0
0 / 0 / 1
Регистрация: 22.08.2013
Сообщений: 7
27.09.2013, 15:46
Цитата Сообщение от Aexx Посмотреть сообщение
Не самый правильный способ, но вам, думаю, подойдет.
В первой (основной) форме перед тем, как откроете дочернюю форму, подпишитесь на событие Click кнопки ОК на второй форме. Пример ниже:
C#
1
2
3
4
5
6
Form SlaveForm = new Form();
SlaveForm.buttonOK.Click += (senderSlave, eSlave) =>
{
this.textBox1.Text = SlaveForm.textBox2.Text;
};
SlaveForm.Show();
Для этого нужно, чтобы у кнопки и текстбокса на второй форме имели модификаторы доступа public
Спасибо, мне тоже помогло , два дня мучился) а чего не самый правильный способ ?
0
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 64
04.11.2014, 15:57
подскажите, емются две формы, в первой форме переменной VID присваивается значение.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public Form1()
public string VID;        
{
            InitializeComponent();         
            VID = "03EB";    
        }
 
private void поискОборудованияToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Поиск_оборудования Poisk = new Поиск_оборудования();
            if (Poisk.ShowDialog() == DialogResult.Yes)
            { 
                this.VID = Poisk.VID;  
                MessageBox.Show(VID);        
            }
        }
Потом если надо изменить это значение открываю вторую форму, при этом значение VID берется из первой формы, потом оно изменяется и возвращается обратно в первую форму. Но вот при следущем открывании второй формы опять вставляется 03EB. подскажите что не так. Вот что у меня во второй форме написано:
C#
1
2
3
4
5
6
7
8
9
10
11
12
public string VID, PID;
        public Поиск_оборудования()
        {   
            InitializeComponent();
            Form1 PoiskOborud = new Form1();
            tb_vendor.Text = PoiskOborud.VID;           
        }
        
        private void button1_Click(object sender, EventArgs e)
        {
            VID = tb_vendor.Text;
        }
причем когда вторую форму закрываю, то MessageBox выдает измененное значение, значит из формы в форму передается, а вот почему не изменяется значение VID в первой форме?
0
405 / 11 / 3
Регистрация: 20.10.2016
Сообщений: 43
Записей в блоге: 3
23.11.2018, 07:34
Мой рецепт: https://www.cyberforum.ru/blog... g5551.html
0
2 / 1 / 1
Регистрация: 02.11.2018
Сообщений: 38
23.11.2018, 09:59
cortl, спустя несколько лет
0
405 / 11 / 3
Регистрация: 20.10.2016
Сообщений: 43
Записей в блоге: 3
23.11.2018, 10:57
yodohapux, я тогда ещё про C# не знал
0
23.11.2018, 11:05

Не по теме:

cortl, там коммент прикольный по рецепту)))

0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
23.11.2018, 13:29
Как альтернативу предлагаю массовую рассылку сообщений из любой формы в любую другую.
Механизм основан на реализации интерфейса INotifyPropertyChanged и подписки на него во всех формах

Класс Broadcast является источником данных для всех форм
Кликните здесь для просмотра всего текста
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
public class Broadcast : INotifyPropertyChanged
    {
        private string _message;
 
        public string Message
        {
            get { return _message; }
            set
            {
                _message = value;
                OnPropertyChanged(Message);
            }
        }
 
        public string Source { get; set; }
 
        public event PropertyChangedEventHandler PropertyChanged;
 
        [NotifyPropertyChangedInvocator]
        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }


В основной форме создаются элементы - дочерние формы и каждый элемент маркируется и подписывается на событие класса Broadcast. Также во все формы помещается ссылка на экземпляр класса Broadcast
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public partial class MainForm : Form
    {
        private readonly Broadcast _broadcast;
        public MainForm()
        {
            InitializeComponent();
            _broadcast = new Broadcast();
        }
 
        private void btnElementsFactoryFire_Click(object sender, EventArgs e)
        {
            for (var i = 0; i < numElementsCount.Value; i++)
            {
                var formElement = new FormElement(_broadcast) {MdiParent = this};
                formElement.Show();
            }
        }
    }


В каждой форме описан метод делегата, который подписан на событие PropertyChanged класса Broadcast
Кликните здесь для просмотра всего текста
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
public partial class FormElement : Form
    {
        private Broadcast Broadcast { get; }
        public FormElement(Broadcast broadcast)
        {
            InitializeComponent();
            Broadcast = broadcast;
            Broadcast.PropertyChanged += WriteMessage;
            Name += string.Format(" {0}", Guid.NewGuid().ToString());
 
        }
 
        public void WriteMessage(object sender, EventArgs e)
        {
            var inputMessage = sender as Broadcast;
            if(inputMessage == null) return;
            if(inputMessage.Source == Name) return;
            rtbMessage.Text = inputMessage.Message;
        }
 
        private void btnSendMessage_Click(object sender, EventArgs e)
        {
            Broadcast.Source = Name;
            Broadcast.Message = rtbMessage.Text;
        }
    }
Вложения
Тип файла: rar thread538342.rar (21.3 Кб, 31 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2018, 13:29
Помогаю со студенческими работами здесь

Передача данных между формами
Есть 2 формы: Form1 и Form2. На Form2 заполненный datagridview. Как в Form1 получать данные из определённой ячейки datagridview. ...

Передача данных между формами
Открыты дне формы одновременно. При нажатии на кнопку на первой форме текст из текстовых полей первой формы копируется в текстовые поля...

Передача данных между формами
Помогите кто может перерыл много форумов так ничего и не нашёл. Проблема у меня с передачей данными между формами вот ниже описано все...

Передача данных между формами
Есть две формы Fr1 и Fr2. На Fr2 есть к примеру листобокс. Как из Fr1 добавить в ЛистБокс Fr2 данные?

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


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

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