如何使选项卡页的宽度适应选项卡控件的宽度?

6
我有一个带有两个选项卡的TabControl。
如何使选项卡页适应TabControl的宽度,就像下面的屏幕截图所示。
我尝试使用以下代码行,但它也不起作用。
tabControl1.SizeMode = TabSizeMode.FillToRight;
4个回答

9
首先,设置您的TabControl1大小模式:
tabControl1.SizeMode = TabSizeMode.Fixed;

然后你需要重新计算选项卡页头的宽度:
tabControl1.ItemSize = new Size(tabControl1.Width / tabControl1.TabCount, 0);

请注意:1. 值为0表示高度将采用默认值。2. 在向选项卡控件添加选项卡页面后,请重新计算项目大小。考虑在调整控件大小时会发生什么。


如果您使用全宽度,将会出现“旋转控制”滚动条,请从新宽度中减去1像素以防止此情况发生。 - Ryan_S
这不起作用,因为由于整数除法,您可能会比控件的大小多一个像素或少一个像素。 - Shadowblitz16

1

根据Jarek的回答进行贡献。如果您希望选项卡宽度在调整TabControl大小时动态更改,您可以通过在TabControl Resize事件上实现此功能来实现:

private bool doNotExecuteResizeEventAgain = true;
private void Tab_Control_Resize(object sender, EventArgs e)
{
     if(doNotExecuteResizeEventAgain)
     {
        int tabWidth = ((int)(tab_Control.Width/tab_Control.TabPages.Count)) - 1;
        doNotExecuteResizeEventAgain = false;
        tab_Control.ItemSize = new Size(tabWidth, tab_Details.ItemSize.Height);
        doNotExecuteResizeEventAgain = true;
     }
}

使用变量doNotExecuteResizeEventAgain是因为ItemSize再次调用了Resize事件,因此为了防止循环,我添加了该标志。

0

正如楼主所提到的,这不起作用。文档中缺少的是 “这仅适用于具有多于一行的选项卡控件。” - Ryan_S

-4
这是非法解决这种问题的方式
增加填充(X,Y) X 100 // 代表一些允许的数字 Y 3 // 代表一些允许的数字。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接