调整大小时,拉伸选项卡控件中的选项卡标题,而不是选项卡页

本文关键字:选项 标题 控件 调整 小时 | 更新日期: 2023-09-27 17:59:31

我在winforms中绘制了一个向左的选项卡控件。

每个选项卡页都有一个固定的大小,所以当UI被拉伸时,我希望选项卡标题的ItemSize宽度相应地增加。

    private void tbcTests_Resize( object sender, EventArgs e )
    {
        tbcTests.ItemSize = new Size(
            tbcTests.Width - tbcTests.TabPages[0].Controls[0].Width - tbcTests.Padding.X,
            tbcTests.ItemSize.Height );
    }

此代码导致堆栈溢出。我怀疑这是因为调整大小使用了不正确的尺寸,迫使控件不断重新绘制。然而,我不确定如何修复它。我没有正确地计算多余的空间吗?

我应该如何调整选项卡标题的大小以及使用什么尺寸

调整大小时,拉伸选项卡控件中的选项卡标题,而不是选项卡页

更改ItemSize属性会导致Resize事件再次触发。您需要一个辅助变量来抑制嵌套事件。像这样:

private bool busySizing;
private void tbcTests_Resize( object sender, EventArgs e )
{
    if (busySizing) return;
    busySizing = true;
    try {
       tbcTests.ItemSize = new Size(
          tbcTests.Width - tbcTests.TabPages[0].Controls[0].Width - tbcTests.Padding.X,
          tbcTests.ItemSize.Height );
    }
    finally {
       busySizing = false;
    }
}