我有一个只有一个的表单TabControl
,有许多选项卡,其中每个选项卡只有并排的方形按钮。我试图做到这一点,以便当用户单击选项卡时,表单将自身调整为可以看到特定选项卡中所有按钮的大小或可以看到所有选项卡的大小,以较大者为准。
我只是好奇是否有办法查询标签页中的最后一个控件在哪里?所以我可以做类似的事情:
tabForm.Width = currentTabPage.UsedContentBorder + 10;
或者我是否必须通过添加所有控件和它们之间的大小等来做到这一点?
我有一个只有一个的表单TabControl
,有许多选项卡,其中每个选项卡只有并排的方形按钮。我试图做到这一点,以便当用户单击选项卡时,表单将自身调整为可以看到特定选项卡中所有按钮的大小或可以看到所有选项卡的大小,以较大者为准。
我只是好奇是否有办法查询标签页中的最后一个控件在哪里?所以我可以做类似的事情:
tabForm.Width = currentTabPage.UsedContentBorder + 10;
或者我是否必须通过添加所有控件和它们之间的大小等来做到这一点?
您想找出特定选项卡中所有控件的最大坐标吗?轻松使用 LINQ:
int right = tab.Controls.Cast<Control>().Max(c => c.Right);
int bottom = tab.Controls.Cast<Control>().Max(c => c.Bottom);
现在,要正确选择表单的大小,我想你只需要弄清楚表单比它的 TabPages 大多少......我猜是这样的:
int extraWidth = form.Width - tabControl.SelectedTab.Width;
int extraHeight = form.Height - tabControl.SelectedTab.Height;
然后你就做
form.Size = new Size(right + extraWidth, bottom + extraHeight);
(如果 TabControl 的Anchor
属性设置为所有四个边,TabControl 将自动调整大小。)我想到,如果用户将表单的大小调整得非常小,这可能会出现故障......您可以通过计算表单中的 extraWidth 和 extraHeight 来补偿.Load 事件,然后保存这些值以供以后需要时使用。