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

Взаимосвязь 3-х форм

06.05.2014, 01:03. Показов 3635. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброй ночи, дамы и господа, я долго искал решение в данном ресурсе и в итоге мои поиски не увенчались успехом.
Суть проблемы такова: 1-я форма главная, из неё вызываю 2-ю, в которой представляется информация, взятая из DGV 1-й формы (на данном этапе полёт нормальный), во второй форме по нажатию кнопки открывается третья, в которой используется информация из 2-й (полёт так же нормальный) и после редактирования должна записываться обратно в DGV 1-й формы(вот тут происходит конфуз).
И я даже понял, почему такой конфуз происходит.
после запуска 3-й формы, 1-ю, как лок. переменную, он видит как null. как от этого избавиться?
Миниатюры
Взаимосвязь 3-х форм  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.05.2014, 01:03
Ответы с готовыми решениями:

Взаимосвязь форм
ЗАдача такая! Помогите прошу! Основная форма не запускается пока во второй форме я не введу 2 переменных и их перенесет в основную...

Взаимосвязь проектов
У меня есть решение, в котором несколько проектов. Один из проектов создает dll-ку, которая должна получать некоторые параметры из главного...

Взаимосвязь между 2-мя ListBox
Здраствуйте, можно ли сделать так чтоб при выборе значения 1-го listbox выбиралось значение 2-го?

53
06.05.2014, 13:40
Студворк — интернет-сервис помощи студентам

Не по теме:

nio, так задачка же элементарная... public свойство c private сеттером, и обработчик изменения контрола, присваивающий необходимое значение свойству в момент его изменения. Это первое что в голову пришло.

0
25 / 25 / 6
Регистрация: 26.09.2010
Сообщений: 295
06.05.2014, 14:14
Ну ладно, покажите мне полный рабочий код с вашими примерами передачи данных, если Вы такие крутые программеры
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
06.05.2014, 14:30
Цитата Сообщение от SoloWay Посмотреть сообщение
покажите мне полный рабочий код с вашими примерами передачи данных, если Вы такие крутые программеры
Может быть, тебе дать еще ключ от квартиры, где деньги лежат? ©
SoloWay, и не слишком ли наглое требование, учитывая что тема не Ваша?
Более того ссылка приведённая мной решает проблему (при чём несколькими способами) передачи данных между формами (классами). Для человека желающего разобраться в проблеме этого вполне достаточно.
0
25 / 25 / 6
Регистрация: 26.09.2010
Сообщений: 295
06.05.2014, 14:36
Господа не "дети", покажите код который работает с вашими примерами, именно полный код программы а не 2-3 строчки, а то все горазды критиковать

Добавлено через 2 минуты
ключи мне от вашей квартиры не нужны
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.05.2014, 14:42
nio, да ладно вам... Будет пример.)))
SoloWay, вот он. Форма 1 (основная). На форме кнопка (по ее нажатию вызывается вторая форма) и текстовое поле.
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            button1.Click += delegate(object sender, EventArgs e)
            {
                Form2 F2 = new Form2();
                F2.From2_Event += delegate(object s, MyEventArgs ex)
                {
                    textBox1.Text = ex.Message;
                };
                F2.Show();
            };
               
        }
    }
}
И форма 2, на ней только текстовое поле. Она вызывается из первой формы. Но когда она вызвана, все что вводишь в ее текстовое поле автоматом копируется в текстовое поле формы 1.
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public event EventHandler<MyEventArgs> From2_Event;
        public Form2()
        {
            InitializeComponent();
            textBox1.TextChanged += delegate(object sender, EventArgs e)
            {
                if (From2_Event != null)
                    From2_Event(this, new MyEventArgs(textBox1.Text));
            };
        }
    }
    public class MyEventArgs : EventArgs
    {
        public readonly string Message;
        public MyEventArgs(string msg)
        {
            Message = msg;
        }
    }
}
Проверяйте. И этот прием, естественно, можно хоть на десяток форм использовать...
1
25 / 25 / 6
Регистрация: 26.09.2010
Сообщений: 295
06.05.2014, 14:45
insite2012, Ваш код выглядит более вменяемо, чем выше приведенные примеры
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
06.05.2014, 14:46
Пример "общения" через свойства
на первой форме в методе запускающем вторую форму:
C#
1
2
3
4
var f2 = new Form2();
f2.TextInRTB = "Это текст переданный с формы 1 на форму 2";
f2.ShowDialog();// во второй форме поменять текст
MessageBox.Show(string.Format("Текст полученный со второй формы: {0}", f2.TextInRTB));

на второй: (на форме должен быть richTextBox1)
C#
1
2
3
4
5
public TextInRTB
{
get { return richTextBox1.Text; }
set { richTextBox1.Text = value; }
}
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.05.2014, 14:47
SoloWay, это стандартный пример использования событий. В нем нет ничего необычного и невозможного. События использованы специально, для передачи данных в реальном времени.
0
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 15
06.05.2014, 15:27  [ТС]
у меня DGV связан с БД, обновление данных идёт через dataadapter.update, я бы рад сделать по-умному, да вот только опыта и знаний пока не хватает для этого, поэтому я и хочу внести изменения в DGV, а затем уже апдейтить в БД.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.05.2014, 15:45
booleanhater, я не вижу вашей реализации, но могу предложить обновлять данные в кэше (DataSet), его передавать из формы в форму и информацию из него заносить в datagrid.
0
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 15
06.05.2014, 18:12  [ТС]
Благодарю за помощь, однако таковой вариант предполагает почти полную переработку проекта, на что у меня не хватит ни времени, ни нынешних знаний. По сути я в C# почти полный 0, эту среду я встретил впервые.
В любом случае я решил эту проблему иным путём, я из 3-й формы загружаю информацию ообратно во 2-ю, а во 2-й уже в DGV 1-й. Тут меня постигла новая неудача: в DGV некоторые ячейки хранят информацию типа nvachar, а я туда пытаюсь залить полученные при редактировании данные типа string, я уже понял, что надо их перебить в char, только вот как это лучше сделать?
вопрос этот меня терзает не потому что я не могу представить строку как массив символов, а потому что потом оно в DGV будет выглядеть так: "Массив char[]"
или посимвольно прибавлять к ячейке DGV символы из строки?
и еще, какой лучше сделать триггер для изменения?
C#
1
private void textBox1_TextChanged(object sender, EventArgs e)
не подойдет, т.к. при установке курсора на строку изменения(что делается автоматически) триггер срабатывает.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.05.2014, 18:22
booleanhater, а вы расскажите, почему у вас такая сложная логика-3 формы, из одной в другую... Это действительно необходимо? Может можно как-то оптимизировать проект?
0
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 15
06.05.2014, 18:32  [ТС]
Хозяин - барин)
проект у меня является курсовой работой.
суть проекта - создать программное обеспечение, обрабатывающее базу данных, и саму БД, естественно, тоже создать.
изощрённая архитектура программы есть ни что иное, как результат прихоти моей преподавательницы.
с другой стороны её можно понять, она хочет мне поставить 5, но заслуженную, т.е. чтоб я сделал продукт такого уровня, чтоб любой не имевший с этой программой общения пользователь смог её запустить и сделать свои дела без особых задумок на тему "какого №#я тут так всё сложно?!".
Именно поэтому в 1-й форме у меня чистое представление БД через DGV, пару кнопок(добавление, удаление, редактирование), менюстрип и контексменюстрип удалось реализовать. Во 2-й форме представление полной информации по одной записи (+представление, удаление, добавление фото к записи +кнопка редактирования, которая уже вызывает 3-ю форму).
Если есть особое желание, могу скинуть проект или же определенные части кода.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.05.2014, 18:42
booleanhater, лучше ТЗ. Ваш код мне мало что скажет, а вот само задание интересует. Какой тип БД можно использовать?
1
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 15
06.05.2014, 19:00  [ТС]
Microsoft® SQL Server® Compact
локальная база данных с расшинением .sdf
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.05.2014, 19:03
booleanhater, понятно. А описание с полным ТЗ имеется?
0
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 15
06.05.2014, 19:18  [ТС]
Теоретическим Заданием?
если да, то врятли, формально заданием является разработка ПО, выполняющего прикладную задачу, коей в моём случае является обслуживание базы данных учителей в школе.
остальные заморочки - чистого рода советы, в какую сторону мне двигаться (в смысле как это должно будет выглядеть в итоге)

По актуальному для меня вопросу: можно ли как-то обратиться к текстБоксу, чтоб его значение выводилось обратно с таким же типом, как и вводилось?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.05.2014, 19:29
booleanhater, ну так вот уже, значит БД учителей. Откуда вы взяли про именно 3 формы? Тоже указание. Вот и расскажите, как вы видите готовую реализацию проекта (формы, контролы, где и какие, что делают и т.д.).
1
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 15
06.05.2014, 19:48  [ТС]
Преподавательница сказала, что желает видеть результат след. образом:
в 1-й форме только представление таблицы, т.е. DGV

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

Это мной было сделано, только вот на тот момент я все изменения, кроме загрузки или удаления фотографии учителя(что делалось во 2-й форме), делал непосредственно в DGV 1-й.

Принёс, показал, говорит - плохо! Изменения надо производить из 2-й формы, где полностью уже есть вся информация по опред. учителю.
Ну я и решил создать 3-ю форму, и я это уже почти доделал, остались маленькие нюансы.

одним из такий сейчас является "склеивание" двух переменных типа char, (я хочу в ячейку DGV в цикле записывать символы изменной строки, путём суммирования).
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.05.2014, 20:00
booleanhater, я подумаю. Может что и придумается. Сроки сдачи работы? Наверное, еще вчера?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.05.2014, 20:00

Взаимосвязь SslClient с lsass.exe
Дело в том что в софте используется некоторые классы из System.Security.Cryptography и SslClient, который в нескольких потоках подключается...

Передать из форм 1, в форм 3.
я перелазил весь форум но так и непонял как передать инфу с textbox3 в textbox1. (из 3 формы в 1) розъясните,

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

Связывание двух форм по расположению на мониторе(Синхронизация форм)
Такая проблема, представим если 2 формы, на первой форме есть клавиша &quot;На вторую форму&quot;, которая будет иметь код: ...

Как по закрытию форм 2 сделать определенное действие в форм 1?
Здравствуйте! Помогите пожалуйста, я новичок в ) Столкнулся с проблемой и не смог найти ответа на форумах. В кратце- есть 2 формы....


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru