c # winForms открытые формы внутри mainform - PullRequest
1 голос
/ 27 декабря 2010

Я запрограммировал приложение на c # и выложу скриншот.В этой основной форме 3 кнопки, которые открывают различные формы.Теперь я решил изменить это приложение, я хочу сделать одну основную форму с полоской меню, которая откроет эти формы.Я использовал этот код, но мне не нравится, или я делаю что-то не так.Мне не нравится, потому что в родительском элементе есть дочерние элементы управления (свернуть, развернуть, закрыть) (см. Второе изображение):

alt text

Пожалуйста, сообщите мне что-нибудь.MDI хорош для такой работы?Спасибо!

Sell sell = new Sell();
sell.MdiParent = this;
sell.Dock = DockStyle.Fill;
sell.Show();`

alt text

Так что моя проблема в том, что родительская форма не заполняется, когда я открываю дочернюю форму, это как сделать, чтобы родительская форма была заполнена дочерней формойalt text

Ответы [ 3 ]

1 голос
/ 27 декабря 2010

Установите для свойства MDI Container значение true для родительской формы. Это поможет.

1 голос
/ 27 декабря 2010

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

Куда бы вы ни поместили элементы управления в режиме разработки, они окажутся в конечном итоге во время выполнения, независимо от того, насколько большим или маленьким вы сделаете окно. Если окно слишком маленькое, чтобы содержать их все, они либо будут закрыты, либо вы увидите полосы прокрутки. В качестве альтернативы, если окно будет сделано больше, чем необходимо, вы увидите много пустого пространства.

Обойти это можно либо установив свойства Dock и Anchor элементов управления, что заставит их расширяться и сжиматься в соответствии с макетом их содержимого. форма. Вы также можете поместить свои элементы управления в TableLayoutPanel или FlowLayoutPanel, чтобы помочь управлять их расположением.


Что касается вопроса, который вы первоначально задавали, я все еще не могу сказать, против ли вы того, как выглядит MDI-приложение, или вы просто не понимаете, как правильно его реализовать. Пояснительный комментарий, который вы предложили, на самом деле проясняет мне вещи на меньше - вы опубликовали фрагмент кода, но не объяснили, что это значит. Как я писал в комментарии, нет (не хакерского) способа показать форму, в которой нет кнопок свертывания, максимизации и закрытия (установка свойства FormBorderStyle на «Нет» делает это, но я думаю, что это глупое решение, которое просто позволяет вам использовать неправильный элемент управления для задания - оно не будет вести себя как форма, пользователь не сможет перемещать его как форму и т. д., так почему использует форма?).

Если вы действительно хотите иметь одно окно приложения с изменяющимся содержимым в центре, вы должны создать серию UserControls. Вы можете расположить каждый пользовательский элемент управления с необходимыми дочерними элементами управления, как если бы вы использовали форму (используя методы разметки флюида, которые я обсуждал выше), добавить каждый пользовательский элемент управления в основную форму, установить для свойства Dock каждого элемента управления значение «Заполнить "(чтобы они заполнили всю область просмотра), а затем напишите код, чтобы просто поменять видимый в данный момент пользовательский элемент управления в области просмотра основной формы. Преимущество использования UserControl по сравнению с чем-то вроде Panel состоит в том, что вы консолидируете весь свой код в единый элемент управления, так же, как вы это делаете с Form. Вы можете использовать элемент управления с вкладками, но если вы не хотите показывать какие-либо признаки того, что существует несколько форм (что и является вашей целью), это также будет неправильным элементом управления для задания.

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

0 голосов
/ 27 декабря 2010

Набор

FormBorderStyle = None

для вашего ребенка формы

...