2012-06-15 4 views
2

Я пытаюсь создать приложение, в котором пользователи могут нажимать на кнопки для перемещения по различным формам. I.E: Если я нажимаю на состояние сети, он заменяет основную форму формой статуса сети, а затем вы можете вернуться к основной форме, нажав «return».Лучший способ заменить формы?

Что было бы лучшим подходом для этого? Я думаю панели, но люди сказали мне использовать usercontrol, и я не совсем знаком с этим. Буду признателен за любое руководство.

+0

Я предполагаю, что вы хотите достичь чего-то похожего на навигационные формы Windows 7, например: http: //www.codeproject.com/Статьи/87738/C-Windows-Aero-Style-Wizard-Control – Codesleuth

ответ

1

enter image description here

Привет,

Предполагая, что ваше требование, как показано в storyboard. Имейте UserControl of these many controls, которые являются DOCKED в соответствии с изображением на UserControl. Теперь в пустой области вам нужно будет show/hide вашего page/form/screen.

Я бы предположил, что этот фрагмент кода может сделать трюк, чтобы вы могли динамически отображать/скрывать форму навигации. Имейте это в навигационном бит, т.е. Next/Prev нажмите на Usercontrol -

 form.Location = new Point(leftPaneControl.Width , BannerControl.Height); 
     form.Size = new Size(this.Width - leftPaneControl.Width, this.Height - BannerControl.Height); 
     form.Anchor = AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left | 
            AnchorStyles.Right; 
     this.Controls.Add(form); 

На Далее и Назад щелкает, вы просто сделать Controls.RemoveByKey(...), чтобы скрыть существующую форму & приведенный выше код будет add следующую соответствующую форму после того, как у вас есть создавал то же самое. Это довольно крутая функция для удаления элементов управления из коллекции, если вы определили unique names для всех своих forms/screen/page [независимо от того, что вы говорите].

Этот подход/дизайн позволит вам сосредоточиться только на разработке ваших страниц/экранов, потому что создание этого UserControl единовременная активность а. После этого вы будете проектировать только отдельные страницы/экраны навигации по одному на .

2

Глядя на сообщение, не вижу любой причина для не имеющего еще одного Form.

Почему бы просто не создать другой, полностью функциональный Form, и скрыть «источник» Form.

Можно создать некоторые, вроде forms linked list структуры, где у вас есть (скажем)

public class MyAppForm : Form 
{ 
    MyAppForm _prev... 
    MyAppForm _next... 
} 

Таким образом, когда (например) Go to next кнопка нажата, мы прячем оригинал, выбрать и показать _next.

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

+0

Ну, мне не нравится, что он переделывает окно (или даже изменяет размер) при создании новой формы. Я хотел бы сохранить его в отношении предыдущей формы. – l46kok

+0

@ это правда, с 'user control' или какой-то скрытой панелью, ее легче достичь. Но положение и изменение размера новой «формы» в правильном направлении - непростая задача. – Tigran

1

Вы можете использовать несколько форм там, где это необходимо, и Show и Hide при необходимости.

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

Смежные вопросы