C # - WinForms - SDI или MDI подход? - PullRequest
2 голосов
/ 30 апреля 2011

Я создаю приложение Visual C # WinForms, которое будет содержать 4 формы:

  1. Форма «управления», которая будет иметь где-то между 2 кнопками и, возможно, до 10 или около того.Поэтому на экране должно быть достаточно места для максимального количества кнопок.
  2. Форма «ведения журнала», которая будет содержать большой элемент управления textbox.
  3. Форма «настройки», которая будет содержатьэлемент управления вкладками с различными настройками конфигурации, которые можно настроить.
  4. Форма "журнала заказов", которая очень похожа на # 2.

Вероятно, пользователь захочет изменить положение каждогоиз этих форм по-разному.Тем не менее, я бы хотел, чтобы эти формы управлялись родительской формой, чтобы при закрытии приложения все остальные формы закрывались.Есть ли способ сохранить подход MDI, но позволить дочерним формам перемещаться за пределы родительской формы, используя C # WinForms?Спасибо!

Ответы [ 3 ]

4 голосов
/ 30 апреля 2011

обычно для таких случаев вы используете функцию «стыковки». То же самое делается в самой Visual Studio. Таким образом, пользователь может легко скрывать / показывать формы.

Такой пакет не поставляется с Visual Studio, но для этого есть бесплатные библиотеки. Проверьте это http://sdock.codeplex.com/ например.

2 голосов
/ 30 апреля 2011

Вы можете делать все, что захотите.

Вы можете установить отношения родитель-ребенок между формами.Или, если хотите, вы можете явно закрыть другие формы, когда основная форма закрыта.

Большинство систем отходят от MDI (как, например, Office), поэтому я бы, вероятно, выбрал SDI-стильинтерфейс, даже если у вас есть несколько форм.MDI имеет тенденцию не очень эффективно использовать экранную недвижимость, и большинство современных пользователей не привыкли иметь дело с некоторыми из его причуд.

1 голос
/ 30 апреля 2011

Я немного поработал с приложениями MDI и попробовал нечто подобное.

Есть несколько вещей, которые я узнал из опыта, которые вы должны рассмотреть, прежде чем принять решение.

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

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

Еще одна изюминка с MDI заключается в том, что вы не можете использовать прозрачность окна, если у вас есть такая необходимость.

...