Visual C # / панели WinForms - PullRequest
       8

Visual C # / панели WinForms

3 голосов
/ 10 сентября 2011

Я пытаюсь перекрывать панели, чтобы при каждом нажатии кнопки была видна определенная панель.

Однако выполнять эту работу очень сложно, поскольку панели не перекрываются.

например У меня есть панель 1 и панель 2:

Я делаю панель 2 так же, как панель 1, Всякий раз, когда я ставлю их на одну и ту же позицию ... Иногда панель 2 становится участником панели 1, и всякий раз, когда я устанавливаю видимость панели 1 в истинное состояние, также отображается панель 2.

Я хочу, чтобы две панели перекрывали друг друга.

"Кстати, я делаю вертикальную вкладку, поэтому я подумал, что скрытие, скрытие панелей может быть моим лучшим подходом.

Можно ли заставить панели перекрывать друг друга?

Ответы [ 3 ]

4 голосов
/ 10 сентября 2011

Дизайнер борется, вы перекрываете их.Вы должны использовать небольшую хитрость, чтобы остановить нижнюю панель от сосания перекрывающей панели.Поместите перекрывающую панель в верхнее левое положение, чтобы они действительно перекрывались.Затем поместите его в нужное место, добавив код в конструктор формы:

    public Form1() {
        InitializeComponent();
        panel2.Location = panel1.Location;
        panel2.Size = panel1.Size;  // optional
    }

Еще один способ сделать это с помощью View + Other Windows + Document Layout.Вы можете перетащить внутреннюю панель во внешний контейнер (форма).Однако вам придется отредактировать свойство Location вручную.

0 голосов
/ 10 сентября 2011

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

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

0 голосов
/ 10 сентября 2011

Абсолютно возможно иметь перекрывающиеся панели.

Проблема, с которой вы сталкиваетесь, заключается в том, что редактор графического интерфейса обрабатывает вашу панель как контейнеры (это верно), и, пока вы помещаете что-то (включая другую панель) в панель, она «вкладывается» в этот контейнер.

Чтобы избежать такого поведения, сначала поместите одну панель и расположите / отрегулируйте ее соответствующим образом. Затем щелкните правой кнопкой мыши и выберите «Блокировать элементы управления». Это заблокирует все текущие элементы управления формы, и вы сможете размещать новые элементы управления, включая панели, непосредственно над ними, не опасаясь, что что-то будет вложено или каким-либо образом помещено в существующий контейнер.

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

РЕДАКТИРОВАТЬ: К сожалению, я не совсем правильно с моим ответом. Блокировка панелей не мешает им полностью поглотить места управления. Но в случае частичного перекрытия оба контейнера создаются на одном уровне глубины, поэтому в случае перекрывающихся панелей такой проблемы не существует, как это было задано в вопросе.

...