在我的Windows应用程序中,我把一个面板停靠在右边,上面有一个分组框和取消和打印按钮。我有另一个带有按钮和分组框的面板,单击按钮时,组框位置会更改以使其成为必须放置在此面板上方的自定义滑块。我无法将滑块面板放置在这个右侧停靠的面板中,因为宽度不同。
我可以将滑块面板放置在不停靠在这个右侧停靠面板上方。 但是当窗口调整大小时,除此滑块面板外,所有停靠的面板都会相应地调整大小。
右停靠面板的设计器代码。
this._pnlBasicPanelRight.Controls.Add(this._pnlBottomButtons);
this._pnlBasicPanelRight.Controls.Add(this._tgbxLocation);
this._pnlBasicPanelRight.Dock = System.Windows.Forms.DockStyle.Right;
this._pnlBasicPanelRight.Location = new System.Drawing.Point(1105, 0);
this._pnlBasicPanelRight.Name = "_pnlBasicPanelRight";
this._pnlBasicPanelRight.Size = new System.Drawing.Size(167, 693);
this._pnlBasicPanelRight.TabIndex = 44;
滑块面板的设计器代码
this._pnlDataGrid.Dock = System.Windows.Forms.DockStyle.Right;
this._pnlDataGrid.Controls.Add(this._tgrpLimitValues,1,0);
this._pnlDataGrid.Controls.Add(this._btnRightBottomPanelVisibility,0,0);
this._pnlDataGrid.Size = new System.Drawing.Size(483, 370);
this._pnlDataGrid.Location = new System.Drawing.Point(1310, 159);
this._pnlDataGrid.Name = "_pnlDataGrid";
this._pnlDataGrid.TabIndex = 44;
这就是我需要我的右面板的样子
停靠某些东西会将其粘在其容器的右侧并占据整个高度。你不能让两个面板争夺整个高度的占领,他们彼此不了解,所以他们本质上不会很好地发挥并划分空间(没有分配空间的机制(
您需要使用知道如何让两个东西占用高度并且可以分配空间的设备,例如具有水平分割模式的 SplitContainer。将拆分容器停靠在右侧,然后将两个面板放入其中,一个位于拆分器的两侧
看着你发布的图片,我会忘记停靠(dock:none(,而是像你在图像中所做的那样放置面板,然后设置锚点属性:
- 右上面板:锚点顶部 + 右侧
- 右下面板:锚点顶部 + 右侧 + 底部
锚点表示"在所选边缘和封闭容器的相同边缘之间保持相同的距离">
这意味着当窗口调整大小变大时,您的右上角面板将左右移动,但它不会向下移动或变大。右下面板也会左右移动,不会上下移动,但会随着窗口的增长垂直增长
相反,如果您希望右下面板为固定大小,而顶部面板垂直增长:
- 右上面板:锚点顶部 + 右侧 + 底部
- 右下面板:锚底部+右侧
这将使右下面板具有固定大小并粘在窗口的右下角(向左右下移动,不会增长(,右上角的面板将左右移动,不会水平增长,但会随着窗口高度的变化而垂直增长和收缩