Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
 Аватар для МихаилЗеленски
1 / 1 / 2
Регистрация: 14.10.2015
Сообщений: 95

Обновление таблицы dataGridView после закрытия дочерней формы

09.08.2017, 15:18. Показов 4290. Ответов 6

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Собственно говоря есть главная форма, на которой находится dataGridView таблица, так же есть дочерняя форма, которая открывается поверх главной с помощью
C#
1
Form2.Show()
, там производится добавление данных в таблицу, что отображается в главной форме и затем ее можно закрыть. Так вот, мне необходимо что бы после закрытия дочерней формы данные в dataGridView обновились автоматически.
Я пробовал через немодальные окна (
C#
1
Form2.ShowDialog()
), но это работает только если главная форма была скрыта (
C#
1
this.Hide();
), а после закрытия вновь показана (
C#
1
this.Show();
).

Вот ссылка на GitHub : https://github.com/zelenskyiMi... ndowsForms
Главная форма - Form1 , дочерняя - AddForm
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.08.2017, 15:18
Ответы с готовыми решениями:

После закрытия дочерней формы если у нее был public контролл, то к нему правомерно обрашаться?
Здравствуйте! Всем доброе утро. Вопрос в названии темы. Я вот если создаю новую форму Form2 form2 динамически и если на ней добавлен...

Обновление формы после закрытия
После закрытия Form2 нужно чтобы данные на Form1 обновились(datagridview1, textbox1 и textbox2) Перепробовал все возможные варианты,...

Обновление label в первой формы после закрытия второй
Добрый день! У меня есть две формы PZ6 и inputForm Вторая вызывается из первой по нажатию кнопки. private void...

6
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
09.08.2017, 23:15
Лучший ответ Сообщение было отмечено ViterAlex как решение

Решение

подпишись на событие закрытия второй формы, и по событию делай что надо, refresh или еще что...
2
 Аватар для МихаилЗеленски
1 / 1 / 2
Регистрация: 14.10.2015
Сообщений: 95
10.08.2017, 11:25  [ТС]
Хорошо, почитаю, попробую,спасибо
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
10.08.2017, 15:40
МихаилЗеленски,
1. Способ открытия дочерней формы через Show() - момент интересный... а если пользователь 10 раз нажал кнопку открытия - то с какой из дочерних форм обновлять данные - подумайте на досуге об этом.
2. Не всегда корректно подписываться на закрытие формы - тут чисто психологический момент. Ведь пользователь может ввести неправильные значения - и машинально закроет форму - а они бац - и сохранятся - лучше использовать форму диалога с клавишами применить и отмена, тогда пользователь берет на себя ответственность за введенные данные, а не программист.
3. Используйте биндинг/датасорс в гриде главной формы, тогда можно передавать обект биндинга между формами (или строки - от ТЗ и программиста зависит) - и соответственно обновлять их свободно в каждой из форм, как именно передавать - тут на форума в FAQ очень доходчиво расписано.
Грид после изменения датасорса сам должен себя перерисовать, но на крайний случай, да, делайте ему Refresh().
0
 Аватар для МихаилЗеленски
1 / 1 / 2
Регистрация: 14.10.2015
Сообщений: 95
15.08.2017, 14:15  [ТС]
hoolygan
1) О том, что пользователь может открыть форму 10 раз - существует проверка на то, открыта ли форма
C#
1
2
3
4
5
6
7
8
9
10
11
 
if (someForm == null || someForm.IsDisposed)
            {
                someForm = new SomeForm ();
                someForm.Show();
                
            }
            else
            {
                MessageBox.Show("This window has already been opened");
            }
Не знаю насколько это хорошо, но это работает)

2) В логике моего приложения нужно реализовать изменение или обновление и добавление каких-либо данных, поэтому если пользователь введет что-то не так - то он всегда сможет это изменить. Хотя, если честно, Ваши слова разумны, и я тоже об этом думал. Я не совсем пойму что Вы хотите сказать этим :
Цитата Сообщение от hoolygan Посмотреть сообщение
лучше использовать форму диалога с клавишами применить и отмена, тогда пользователь берет на себя ответственность за введенные данные, а не программист.
Вы имеете в виду , что нужно сделать какое-то диалоговое окно, которое будет говорить "Вы уверенны что внесли все изменения правильно?" и там кнопочки Применить и Отмена, или просто на самой форме. Если на самой форме - то у меня это так и работает : написал что-то, нажал "Сохранить" а потом уже закрыл форму. Мне лишь нужно, что бы главный датагрид обновлялся после закрытия этой самой формы, но Вы дали мне и другой совет по поводу моего вопроса в 3 пункте Вашего сообщения). Я как то читал о биндинг/датасорс, но не применял, спасибо, обязательно попробую, так как с событиями пока ничего не вышло..)
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
16.08.2017, 13:20
Немного не так Вы поняли.
Когда срабатывает ShowDialog()на екземпляре формы - то он отдает DialogResult, и его значение можно сравнить с перечислением стандартным дотнетовским. Т.е. что-то такого
C#
1
2
3
4
if(propertyForm.ShowDialog() == DialogResult.Ok)
{
//обновляем/что-нибудь делаем
}
А на клавишу вешаете свойство DialogResult (можно прямо в дизайнере).
ТОгда решаете сразу уйму проблем - и обновление только по клавише "Сохранить" на второй форме, и проверку на налы в екземпляре формы.
0
 Аватар для МихаилЗеленски
1 / 1 / 2
Регистрация: 14.10.2015
Сообщений: 95
16.08.2017, 16:48  [ТС]
кажется понял. Хорошо, очень полезно, спасибо большое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.08.2017, 16:48
Помогаю со студенческими работами здесь

Как осуществить вывод таблицы в DataGrid и обновление таблицы в БД после закрытия окна программы
Имеется БД в MS Sql с одной таблицей. Как осуществить вывод таблицы в DataGrid(или другой компонент) и обновление таблицы в БД после...

Как реализовать обновление Form1.DataGridView после закрытия Form2?
Посоветуйте пожалуйста как сделать чтобы DataGridView обновлял данные? Есть две формы Form1 и Form2. Данные добавляются в таблицу через...

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

Событие закрытия дочерней формы
Всем доброго времени суток! У меня такая ситуация возникла: есть материнская форма, из-под нее открываю дочернюю форму (TForm.Show в...

Как убрать кнопки сворачивания, закрытия с дочерней MDI формы
Всем привет. Имеется одна главная форма и несколько MDI дочерних. Все хорошо работает, открывается. Но необходимо, чтоб в дочерних формах...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
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
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru