不能将两个右停靠的面板一个放在另一个上面,还有其他选择吗?



在我的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(,而是像你在图像中所做的那样放置面板,然后设置锚点属性:

  • 右上面板:锚点顶部 + 右侧
  • 右下面板:锚点顶部 + 右侧 + 底部

锚点表示"在所选边缘和封闭容器的相同边缘之间保持相同的距离">

这意味着当窗口调整大小变大时,您的右上角面板将左右移动,但它不会向下移动或变大。右下面板也会左右移动,不会上下移动,但会随着窗口的增长垂直增长

相反,如果您希望右下面板为固定大小,而顶部面板垂直增长:

  • 右上面板:锚点顶部 + 右侧 + 底部
  • 右下面板:锚底部+右侧

这将使右下面板具有固定大小并粘在窗口的右下角(向左右下移动,不会增长(,右上角的面板将左右移动,不会水平增长,但会随着窗口高度的变化而垂直增长和收缩

最新更新