Как сделать закрепленную панель поверх другой закрепленной панели - PullRequest
2 голосов
/ 05 октября 2011

У меня есть панель, которая закреплена слева, и другая панель, которая закреплена как заливка в середине. моя панель слева начинается с ширины 8, а затем она сдвигается до 295. Мне нужно, чтобы она прошла поверх панели. Что он делает, толкая всю панель? Есть ли способ заставить его пройти поверх панели?

Ответы [ 2 ]

1 голос
/ 05 октября 2011

Оставьте левую панель пристыкованной, и вместо того, чтобы прикрепить другую, измените размер до начальной клиентской области, закрепите ее сверху, снизу, слева и справа. Затем, чтобы убедиться, что все происходит в правильном порядке, щелкните правой кнопкой мыши на левой панели и выберите «Переместить на передний план».

Вот код конструктора:

        // 
        // panelLeft
        // 
        this.panelLeft.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
        this.panelLeft.Dock = System.Windows.Forms.DockStyle.Left;
        this.panelLeft.Location = new System.Drawing.Point(0, 0);
        this.panelLeft.Name = "panelLeft";
        this.panelLeft.Size = new System.Drawing.Size(54, 456);
        this.panelLeft.TabIndex = 0;
        this.panelLeft.Click += new System.EventHandler(this.PanelLeftClick);
        // 
        // panelOther
        // 
        this.panelOther.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
        | System.Windows.Forms.AnchorStyles.Left) 
        | System.Windows.Forms.AnchorStyles.Right)));
        this.panelOther.BackColor = System.Drawing.Color.Maroon;
        this.panelOther.Location = new System.Drawing.Point(60, 0);
        this.panelOther.Name = "panelOther";
        this.panelOther.Size = new System.Drawing.Size(477, 456);
        this.panelOther.TabIndex = 1;

И код обработчика формы, который показывает управление. (Нажмите на левую панель, чтобы увеличить или уменьшить ее ...)

using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1() {InitializeComponent();}

        private bool _isLeftPanelBig;
        private void PanelLeftClick(object sender, EventArgs e)
        {
            panelLeft.Size = _isLeftPanelBig ? new Size(80, 300) : new Size(500, 300);

            _isLeftPanelBig = !_isLeftPanelBig;
        }
    }
}
0 голосов
/ 19 октября 2011

То, что я в итоге сделал, это переместил функцию Добавить в начало после добавления панели. Я не осознавал, что делал это до того, как панель была добавлена ​​в окно.

...