我的表单包含一个制表符控件。在一个标签上,我有三个组框。每个组框的高度必须为选项卡高度的三分之一。
现在我在选项卡控件的布局事件上有这个代码:
// Determine the position of the group panels (gp)
this.SuspendLayout();
int oneThird = (tabPanel.Height - 5) / 3;
if (_currentQuestion != null && _currentQuestion.QuestionTypes == QuestionTypes.Infofield)
{
gpExplanation.Visible = false;
gpFillInHelp.Visible = false;
gpFillInQuestion.Height = oneThird * 3;
}
else
{
gpExplanation.Visible = true;
gpFillInHelp.Visible = true;
gpFillInQuestion.Height = oneThird;
gpExplanation.Height = oneThird;
gpFillInHelp.Height = oneThird;
}
// Determine position of the appointment and achievement group panels
int height = tabPanel.Height - 30;
int half = height / 2;
pnlAppointment.Height = half;
this.ResumeLayout();
我的表单构造函数中也包含此代码:
// Set styles which prevent screen flickering
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);
this.DoubleBuffered = true;
在您眼中,设置组箱高度的最佳方法是什么?当表单调整大小时,组框高度必须是面板高度的三分之一。
我也想尽可能少地在屏幕上闪烁。
答案 0 :(得分:3)
您可以使用TableLayoutPanel。在面板中,您可以指定RowStyle
这样它的大小就是父控件的百分比:
tableLayoutPanelGroupBoxes.ColumnCount = 1;
tableLayoutPanelGroupBoxes.RowCount = 3;
tableLayoutPanelGroupBoxes.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33333F));
tableLayoutPanelGroupBoxes.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33334F));
tableLayoutPanelGroupBoxes.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33334F));
只需将您的群组框中的DockStyle
设置为DockStyle.Fill
,然后将其添加到表格布局面板即可。您可以使用设计器执行此操作。
答案 1 :(得分:0)
使用组框的Achor属性。