панели winforms против панелей Java - PullRequest
1 голос
/ 04 марта 2009

В java swing я могу вставлять панели в панели и так далее, и мне не нужно создавать новое окно для каждого вида моего приложения или возиться с удалением и добавлением элементов управления.

Существует панель, классифицируемая как C #, однако я не вижу никакого способа создать «форму панели» или просто форму в конструкторе форм, которая представляет собой панель и ее содержимое.

Как мне тогда сделать это и работать так же, как я делал с java swing?

Ответы [ 3 ]

2 голосов
/ 04 марта 2009

Обычно я просто закрепляю различные формы внутри друг друга, устанавливая для свойства IsMdiContainer значение true в родительском окне. Затем я создаю подчиненные формы, которые закрепляю, используя следующую функцию:

static class FormUtil
{
    static public void showForm(Form sender, Control reciever)
    {
        sender.ControlBox = false;
        sender.FormBorderStyle = FormBorderStyle.None;
        sender.ShowInTaskbar = false;
        sender.TopLevel = false;
        sender.Visible = true;
        sender.Dock = DockStyle.Fill;

        reciever.Controls.Clear(); //clear panel first
        reciever.Controls.Add(sender);
    }

}

тогда всякий раз, когда мне нужно закрепить форму внутри панели на форме родителей, я просто делаю:

FormUtil.showForm(new SomeForm(), this.splitContainer1.Panel1);

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

0 голосов
/ 04 июня 2009

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

0 голосов
/ 04 марта 2009

На самом деле, вы можете использовать панель управления и установить для ее свойства Dock значение Fill. Таким образом, ваша панель станет целым холстом формы. Затем вы можете добавлять дочерние панели по мере необходимости либо через код позади, либо через конструктор форм.

...