调整大小时,拉伸选项卡控件中的选项卡标题,而不是选项卡页
本文关键字:选项 标题 控件 调整 小时 | 更新日期: 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;
}
}