8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280

MDI приложение с дочерним окном - как растянуть форму по контейнеру Form1

29.10.2021, 10:55. Показов 3167. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
И снова всем доброго дня. Хотел задать простой вопрос.

Я увидел, что в C# Windows Forms делать MDI-приложения с дочерними формами. Но как сделать, чтобы дочерняя форма растягивалась по контейнеру основной? И неподвижно прицеплялась к краям контейнера?

Вызвать ее получается, да вот без заполнения и привязки к краям не очень красиво смотрится.

C#
1
2
3
4
5
6
7
8
        private void MDIChildNew_Click(object sender, EventArgs e)
        {
            Form2 newMDIChild = new Form2();
            // Set the Parent Form of the Child window.
            newMDIChild.MdiParent = this;
            // Display the new form.
            newMDIChild.Show();
        }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.10.2021, 10:55
Ответы с готовыми решениями:

Нужно встроить дочерним окном другое приложение или модуль.
Говорят, что .net полностью заменила COM и всю её функциональность... У меня тут простая задача - есть окно (типа MainFrame), и в него...

Каким образом можно открыть приложение в форме так, чтобы оно являлось дочерним окном?
Добрый день. Каким образом можно открыть приложение в форме так, чтобы оно являлось дочерним окном?

Как растянуть родительский элемент по дочерним?
Как растянуть родительский элемент по дочерним? Проблема в том что, если сдвигать дочерние элементы (позиционированием) ,то они вылазиют за...

29
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
29.10.2021, 14:51  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Как это нет проблем?
Если без поиска, то можно наделать сколько угодно таблиц. Проблема была в добавлении поиска, и когда добавил - то вышла другая. Правда, когда я делал прямое подключение БД к DGV в одном из курсачей, я с этим справился моментально. Но тут потребовался уже другой способ.

После решения осталось только починить алгоритм недопущения дубликата MDI-формы. Как же сделать это правильно, без двойного клика при новом открытии?
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,763
Записей в блоге: 4
29.10.2021, 15:13
Цитата Сообщение от Jim Reinor Посмотреть сообщение
Проблема была в добавлении поиска, и когда добавил - то вышла другая.
Поиск ведётся в привязанных коллекциях, я вам уже об это много раз говорил.
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
29.10.2021, 15:19  [ТС]
Жаль, что Вы не хотите помочь с устранением дубликата формы. Я все еще продолжу искать решение.
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,763
Записей в блоге: 4
29.10.2021, 15:30
Лучший ответ Сообщение было отмечено Jim Reinor как решение

Решение

Цитата Сообщение от Jim Reinor Посмотреть сообщение
Жаль, что Вы не хотите помочь
Я не не хочу, я наоборот вас направляю в правильное русло
1
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
30.10.2021, 07:28  [ТС]
В общем, решение оказалось очень простым, написал его сам:
Не дает делать дубликат MDI формы, вызванной первой, и переводит на нее, а в случае открытия второй - дропает первую дочернюю форму)

C#
1
2
3
4
5
6
7
8
private void button1_Click(object sender, EventArgs e)
        {
            if (ActiveMdiChild != null)
                ActiveMdiChild.Close();
            FormEq f = new FormEq();
            f.MdiParent = this;
            f.Show();
        }
Задача решена)
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,763
Записей в блоге: 4
30.10.2021, 07:49
Jim Reinor, а зачем дропать первую? Можно ведь и так
C#
1
2
3
4
5
6
7
8
{
  if(ActiveMdiChild == null)
  {
    FormEq f = new FormEq();
    f.MdiParent = this;
    f.Show();
  }
}
Но только смысл от этого? MDI - многодокументный интерфейс, а у вас получается можно сделать всего один документ. Я ведь говорил, напишите простое многооконное - диалоговое приложение. И функционала больше и красивее
1
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
30.10.2021, 08:14  [ТС]
Мой вариант под мою область получше, так как при вызове формы2 дропает первую и переключает на вторую, а в данном варианте для этого надо закрыть ее и только потом вызвать) А у меня можно вызовом новой закрыть предыдущую и вызвать сразу новую)

При вызове новой формы дроп предыдущей и вызов новой нужен, поскольку инициализация/обработка данных во всех 5 формах с таблицами забирают заметно больше ресурсов) Поэтому у меня этим реализовано переключение между требуемыми формами)
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,763
Записей в блоге: 4
30.10.2021, 08:35
Цитата Сообщение от Jim Reinor Посмотреть сообщение
поскольку инициализация/обработка данных во всех 5 формах с таблицами забирают заметно больше ресурсов
У вас там что, 100500 записей в каждой форме? Откуда жор ресурсов при выгрузке и обработке?
У меня в трех окнах грузит данные, по 100 - 300 записей и ваще всё происходит молниеносно, и это на ноуте
Или вы выгружаете полностью всю таблицу в форму, а потом начинаете в ней всё фильтровать и считать? Дак кто так делает... В запросах делаются фильтры (WHERE) и делаются все расчёты, и грузится только нужное количество записей, зачем пользователю 100500 ваших данных в форме, он там потеряется и задолбается ждать пока они загрузятся, а потом будет ждать пока DataGridView пролагает при перемотке стольких строк...
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
30.10.2021, 10:35  [ТС]
В моем случае это нужно потому, что, теоретически, БД в процессе работы может раздуться и в некоторых таблицах, где данные часто меняются из-за своей предметной области, быть по 10к или больше записей) Но в целом БД проекта будет не велика.
Может быть, теоретически, более маломощный компьютер чем у меня, или еще что-то)
Для решения чисто учебной задачи - все это в самый раз)

А с остальным проблем нет)
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,763
Записей в блоге: 4
30.10.2021, 11:14
Цитата Сообщение от Jim Reinor Посмотреть сообщение
В моем случае это нужно потому, что, теоретически, БД в процессе работы может раздуться и в некоторых таблицах, где данные часто меняются из-за своей предметной области, быть по 10к или больше записей
У меня около полумиллиона записей на сегодняшний день (это для современных СУБД всё равно что 100 грамм выпить), если брать все таблицы, и это не считая View, UDF, SP (которые во время выборки и записи общаются с, минимум, 10-ю таблицами). Работает всё идеально даже на офисных калькуляторах. А всё почему, потому что грузить надо сервер БД, он большой и мощный, справится со всем что ему даш, конечно в пределах разумного, а вот клиент... Это может быть планшет, и как прикажете ему обрабатывать 100500 записей?
Цитата Сообщение от Jim Reinor Посмотреть сообщение
Для решения чисто учебной задачи - все это в самый раз
Если планируете применять полученные знания дальше, то задумайтесь про правильную реализацию архитектуры клиент-сервер, как правильно между ними распределять задачи, как максимально облегчить клиент, чтоб работало всё даже на калькуляторе
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.10.2021, 11:14

ООП в Python. Организация класса с родительским окном и класса с дочерним окном
Собственно есть такой код накиданый мной. Изначально передо мной была задача: Создать приложение с использованием tkinter и ООП подхода к...

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

Проблема с дочерним окном
Важный вопрос у меня в этой книге использ. дочернее окно! но когда я установила свойсво IsMdiContainer и для пукнта меню обратобала...

Работа с дочерним окном
Добрый день, первый раз работаю с WinApi, необходимо, чтб ы при нажатии на кнопку появлялось новое окно дочернее. Я написала такой код: ...

Как правильно управлять свёрнутым окном в MDI форме
Как правильно управлять свёрнытым окном в MDI форме. К примеру свернул окно в MDI форме, а двигать подчинённое(свёрнутое) окно могу....


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru