Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280

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

29.10.2021, 10:55. Показов 3152. Ответов 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,754
Записей в блоге: 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,754
Записей в блоге: 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,754
Записей в блоге: 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,754
Записей в блоге: 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,754
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть не большие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru