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

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

06.05.2014, 01:03. Показов 3625. Ответов 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
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru