Вопрос

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

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

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

Это было полезно?

Решение

Обычно я просто закрепляю различные формы внутри друг друга, устанавливая для свойства 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);

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top