#c# #windows-forms-designer #docking #panels
#c# #windows-forms-designer #закрепление #панели
Вопрос:
У меня есть панель, которая закреплена слева, и другая панель, которая закреплена как заполнение посередине. моя панель слева начинается с ширины 8, а затем она открывается до 295. Мне нужно, чтобы она была поверх панели. То, что он делает, это перекладывает всю панель? Есть ли какой-нибудь способ заставить ее поверх панели?
Ответ №1:
Оставьте левую панель закрепленной и вместо того, чтобы закреплять другую, измените ее размер в соответствии с начальной клиентской областью, закрепите ее сверху, снизу, слева и справа. Затем, чтобы убедиться, что все происходит в правильном порядке, щелкните правой кнопкой мыши на левой панели и выберите Вывести на передний план.
Вот код конструктора:
//
// 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;
}
}
}
Ответ №2:
В итоге я переместил функцию bringtofront после добавления панели. Я не понимал, что делаю это до того, как панель была добавлена в окно.