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

时间:2011-06-20 13:22:53

标签: c# winforms user-interface

我是所有者 - 在winforms中绘制一个面向左侧的tabcontrol。

每个标签页都有固定的大小,因此当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 );
    }

此代码导致堆栈溢出。我怀疑这是因为调整大小是使用不正确的尺寸完成的,迫使控件不断重绘。但是,我不确定如何解决它。我没有正确考虑多余的空间吗?

我应该如何调整标签页眉并使用哪些尺寸?

1 个答案:

答案 0 :(得分:2)

更改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;
    }
}