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

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

02.03.2014, 17:18. Показов 4643. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вообщем у меня две формы
главная(элемент упраления):
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using WindowsFormsControlLibrary1;
using System.Windows.Forms;
 
namespace WindowsFormsControlLibrary1
{
    
    public partial class gg : UserControl
    {
        public gg()
        {
            InitializeComponent();
        }
       
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (label1.Left > -label1.Width)
            {
                label1.Left -= 5;
            }
            else
            {
                label1.Left = panel1.Width;
            }
            GHG f2 = new GHG();
            f2.Owner = this;
        }
        private void UserControl1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.O)
                    {
                        MessageBox.Show("Данный элемент разработал студент УГАТУ Марченко Дмитрий!");
                    }
            }
 
        private void gg_DoubleClick(object sender, EventArgs e)
        {
            foreach (Form f in Application.OpenForms)
            {
                if (f.Name == "GHG")
                {
                    MessageBox.Show("Окно редактирования уже открыто");
                    return;
                }
            }
            GHG f2 = new GHG();
            f2.ShowDialog();
        }
 
        private void panel1_DoubleClick(object sender, EventArgs e)
        {
            foreach (Form f in Application.OpenForms)
            {
                if (f.Name == "GHG")
                {
                    MessageBox.Show("Окно редактирования уже открыто");
                    return;
                }
            }
            GHG f2 = new GHG();
            f2.ShowDialog();
        }
 
        private void label1_DoubleClick(object sender, EventArgs e)
        {
            foreach (Form f in Application.OpenForms)
            {
                if (f.Name == "GHG")
                {
                    MessageBox.Show("Окно редактирования уже открыто");
                    return;
                }
            }
            GHG f2 = new GHG();
            f2.ShowDialog();
        } 
    }
}
и вспомогательная форма:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using WindowsFormsControlLibrary1;
using System.Windows.Forms;
 
namespace WindowsFormsControlLibrary1
{
    public partial class GHG : Form
    {
        gg f1 = new gg();
        
        public GHG()
        {
            InitializeComponent();
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            gg f1 = this.Owner as gg;
            if (f1 != null)
            {
                string s = f1.label1.Text;
                f1.label1.Text = textBox1.Text;
            }
        }
    }
}
нужно передать значение из textBox1 на вспомогательной форме в значение Lable1 на главной.
подскажите что делаю не так?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.03.2014, 17:18
Ответы с готовыми решениями:

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

Передача данных между формами
Здравствуйте! Подскажите пожалуйста, как правильно организовать передачу данных между формами. У меня следующая ситуация: ...

Передача данных в БД между формами
Ребята, выручайте) Суть в чем: На Form1 у меня есть Datagridview, подключена база, с первой формы я вызываю вторую форму "Добавить...

19
Life Builder
 Аватар для sk007
531 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,755
02.03.2014, 19:18
тут все дело в строчках
C#
1
2
3
gg f1 = new gg();
 
GHG f2 = new GHG();
Вы как бы создаете новую форму
0
4 / 4 / 0
Регистрация: 29.06.2012
Сообщений: 27
02.03.2014, 22:25  [ТС]
А без этой строки форму не открывает
C#
1
GHG f2 = new GHG();
Добавлено через 2 минуты
подскажите как без них можно обойтись

Добавлено через 1 час 32 минуты
Постоянное открытие новой 2 формы исправил.
Но как из textBox1 2 формы передать данные в Lable1 на первой форме?
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
03.03.2014, 00:37
Предварительно в текстбоксе второй формы нужно установить свойство public вместо private.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Forms Code
{
 using System;
 .............
.............. 
 using System.Windows.Forms;
 
       private void button1_Click(object sender, EventArgs e)  // Когда кликнешь по кнопке, откроется форма 2 
       {                                                                          // и текстбоксе уже будет s
         String s = label1.Text;
          Form2 f2 = new Form2();
           f2.textBox1.Text = s;
            f2.Show();
             this.Hide();       
       }
 
}
1
4 / 4 / 0
Регистрация: 29.06.2012
Сообщений: 27
03.03.2014, 00:53  [ТС]
Спасибо конечно, но это не то.
Мне нужно сделать наоборот.
C#
1
2
3
4
5
6
private void button1_Click(object sender, EventArgs e)
        {
            gg f4 = new gg();
            string s = textBox1.Text;
            f4.label1.Text = s;
        }
но к сожалению не работает.

Добавлено через 1 минуту
дело в том что главная форма
C#
1
public partial class gg : UserControl
а вспомогательная
C#
1
public partial class GHG : Form
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
03.03.2014, 00:53
Спутал условие. Теперь label нужно установить свойство public и из формы 2 вызвать форму 1.
Кстати, ты применяешь громоздкий метод вызова одной формы из другой. А если у тебя 10 формы.
Я пользуюсь только тем кодом, который привел, и перехожу из формы в форму в любом направлении
при любом количестве форм.
0
4 / 4 / 0
Регистрация: 29.06.2012
Сообщений: 27
03.03.2014, 01:12  [ТС]
Как бы объяснить. Я разрабатываю элемент управления(чё-то типа button или Label)
основной элемент которого Label1 бегущая строка. А форму вызываю как редактор строки.
Другого способа вызова формы не нашёл.

То что ты предложил попробовал.
C#
1
2
3
4
5
6
7
 private void button1_Click(object sender, EventArgs e)
        {
            gg f4 = new gg();
            string s = textBox1.Text;
            f4.label1.Text = s;
            this.Hide();
        }
this.Hide(); срабатывает а остальное нет.
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
03.03.2014, 02:19
Думаю ошибка в объявлении формы gg f4
Попробуй обычный код
C#
1
2
3
4
5
6
7
8
9
10
11
12
Forms Code
{
       private void button1_Click(object sender, EventArgs e)
       {
         Form4 f4 = new Form4();
          f4.textBox1.Text = label1.Text;
           f4.Show();
            this.Hide();  // Уверен, что будет работать, т.к. систетически пользуюсь и работает безотказно
 
       }
 
 }
0
4 / 4 / 0
Регистрация: 29.06.2012
Сообщений: 27
03.03.2014, 14:10  [ТС]
Попробовал всё равно не работает.

Добавлено через 36 секунд
Похоже что вообще не получиться передать данные.
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
03.03.2014, 14:36
Все же лучше открыть новый проект и ввести работающий код. Это всего несколько строк, потом можно делать всякие добавления.
При новом проекте сразу получаем форму 1. Теперь в ней наверху есть кнопка "Проект". Кликнуть - открется список, выбрать "Добавить форму Windows", Кликнуть и откроется форма 2
Теперь нужны 3 кнопки, код ниже и все.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Forms Code
{
     Код кнопки на форме 1 - открывает форму2
      Form2 f2 = new Form2();
        f2.Show();
         this.Hide();
 
     Код кнопки на форме 2 - открывает форму1
      Form1 f1 = new Form1();
        f1.Show();
         this.Hide();
 
     Код кнопки на форме 2 - для передачи данных в форму1 // Свойство label должно быть public
      Form1 f1 = new Form1();
        f1.label1.Text = textBox1.Text.ToString();  
         f1.Show();
          this.Hide();
 
 }
 
}
0
4 / 4 / 0
Регистрация: 29.06.2012
Сообщений: 27
03.03.2014, 14:58  [ТС]
Погоди погоди.Всё не так.Создаём проект "Библиотека элементов управления Windows Forms".
Потом добавляем форму(Она будет единственной формой окна Windows). И с неё не один объект в основном окне проекта не будет меняться. 27 Часов над этой проблемой возился. Даже таймер отключить не удалось.
Вложения
Тип файла: zip WindowsFormsControlLibrary1.zip (44.8 Кб, 7 просмотров)
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
03.03.2014, 16:39
Цитата Сообщение от Katran-ru Посмотреть сообщение
нужно передать значение из textBox1 на вспомогательной форме в значение Lable1 на главной.
Ответы на 7 самых частых вопросов по WinForms
0
4 / 4 / 0
Регистрация: 29.06.2012
Сообщений: 27
03.03.2014, 17:23  [ТС]
Я читал и пробовал. Но всё равно не робит.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
03.03.2014, 17:50
Цитата Сообщение от Katran-ru Посмотреть сообщение
Забыл как прикреплять к сообщениям документы здесь.
https://www.cyberforum.ru/abou... 03521.html
1
Life Builder
 Аватар для sk007
531 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,755
07.03.2014, 17:26
Лучший ответ Сообщение было отмечено Katran-ru как решение

Решение

Katran-ru, В форму 1 в метод Form1_Load
C#
1
2
Form2 form = new Form2();
            form.f1 = this;
В форму 2 добавляешь
C#
1
public Form1 f1 { get; set; }
обращаешься
с формы 2
C#
1
f1.ТекстБоксВФорме1.text = this.ТекстБоксВФорме2.Text;
здесь еще этот же метод описали
Передать данные из одной формы в другую
1
4 / 4 / 0
Регистрация: 29.06.2012
Сообщений: 27
09.03.2014, 19:34  [ТС]
Спасибо данные начал передавать, но тут же выдаёт ошибку:
Необработанное исключение типа "System.NullReferenceException"
покопался и выявил некий autoCompleteClsid Невозможно разыменовать выражение. Недопустимый указатель. System.Guid
Что это и как исправить?

Добавлено через 1 час 2 минуты
sk007, я использовал данный вами код, но при использование
C#
1
f1.любойЭлемент.ЕгоСвоства =..........
Выдаёт ошибку "System.NullReferenceException".
0
Life Builder
 Аватар для sk007
531 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,755
09.03.2014, 20:11
Katran-ru, А какие данные вам нужно передавать? Я смотрю ваш код так и не понял.
0
4 / 4 / 0
Регистрация: 29.06.2012
Сообщений: 27
09.03.2014, 20:54  [ТС]
Разрабатываю элемент управления VS10 С#
Я попробовал 3 команды:
C#
1
2
3
f1.label1.Text = this.textBox1.Text; 
            f1.label1.Visible = false;
            f1.timer1.Enabled = false;
одна и та же ошибка.
Вложения
Тип файла: zip WindowsFormsControlLibrary1.zip (40.5 Кб, 4 просмотров)
0
4 / 4 / 0
Регистрация: 29.06.2012
Сообщений: 27
09.03.2014, 21:04  [ТС]
Основные задачи проекта:
Изменение текста Label
Изменение жирности курсивности Label
Изменение цвета Label
Изменение размера текста Label
застрял на первом, но если первый получиться то всё остальное по анологии.
0
Life Builder
 Аватар для sk007
531 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,755
09.03.2014, 21:42
Лучший ответ Сообщение было отмечено Katran-ru как решение

Решение

держите ваш рабочий проект
Вложения
Тип файла: rar WindowsFormsControlLibrary1.rar (37.9 Кб, 28 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.03.2014, 21:42
Помогаю со студенческими работами здесь

Передача данных между формами
На форуме есть такой метод передачи данных из формы2 в форму1 Создаем в основном namespace делегат public delegate void...

Передача данных между формами
народ помогите, нужно с Form2 (TextBox1) передать данные на другую форму Form1 в richTextBox1 как это сделать?

Передача данных между формами
Имеется Form1 и Form2. В Form1 по нажатию на крестик формы, не закрываю ее, а сворачиваю. private void...

Передача данных между формами
Добрый день! Я скорее всего туплю, но решение пока не нашёл. Ситуация такая: у меня есть 3 формы, которые появляются последовательно. Т.е....

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
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
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru