Мастер форм в форме окна - PullRequest
       13

Мастер форм в форме окна

3 голосов
/ 09 апреля 2009

Как и в случае с мастер-страницами в ASP.NET, есть ли у нас аналогичная концепция для приложения Windows Form. Чтобы мне не приходилось повторять одну и ту же часть формы (верхний и нижний колонтитулы) много раз в приложении.

Ответы [ 6 ]

9 голосов
/ 09 апреля 2009

Да.

Что вам нужно сделать, это создать свою «Мастер» форму, добавить все необходимые интерфейсы, кнопки по умолчанию и т. Д.

Для таких вещей, как кнопки, я обычно создаю методы, которые обрабатывают события Click как «Виртуальные», чтобы я мог реализовать их в той форме, которую я тогда строю.

После того, как "Мастер" форма построена, вам нужно будет щелкнуть правой кнопкой мыши на проекте и выбрать "Новый элемент". После этого, если вы находитесь в VS.Net 2008, вы можете нажать на категории «Windows Forms», а затем выбрать «Inherited Form».

Как только вы это сделаете, вам будет предложено унаследовать, от какой формы в проекте. Просто выберите «мастер» форму, и вы должны быть установлены.

7 голосов
/ 09 апреля 2009

Создайте основную форму как форму с верхним и нижним колонтитулами, но оставьте середину пустой.

Реализуйте "внутренние страницы" как UserControl с общим интерфейсом и меняйте их по мере необходимости. (Верхний колонтитул, Contentpanel и Footer - Windows.Form.Panel).

-------------------------------
| Header                      |
-------------------------------         ______________
|                             |         |            |
|         ContentPanel        |   <---- | MonkeyEdit |
|                             |         |____________|
-------------------------------
| Footer                      |
-------------------------------

И реализовать контент как

public class MonkeyEdit : UserControl, IContent
{

}

Реализация интерфейса полезна, но не обязательна. После этого, основываясь на событиях / конфигурации, просто загрузите MonkeyEdit в ContentPanel с Dock.Fill. Вы также можете наследовать «основную форму», как вы видите здесь в другом посте.

1 голос
/ 09 апреля 2009

Не совсем то же самое, что и главные страницы, но вы можете создать элемент управления (например, на основе UserControl ) с верхним и нижним колонтитулами, которые все другие формы могут наследовать (или создавать) по мере необходимости.

0 голосов
/ 09 апреля 2009

На главной странице есть возможность указать область содержимого, в которую будут встроены страницы. Таким образом, получение формы, скажем, формы B из формы A и получение функций родительской формы, не доказывает этого. То, что упомянул Бой, имеет больше смысла, когда мы используем Панели.

0 голосов
/ 09 апреля 2009

Добавьте класс, наследуемый от Form, добавьте верхний и нижний колонтитулы (в коде), а затем разрешите всем новым формам наследовать от этого класса.

0 голосов
/ 09 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...