【发布时间】:2011-07-03 11:29:24
【问题描述】:
我在使用 c# Winforms 时遇到了一个奇怪的问题(我承认没有尝试过 VB.NET),我在一个页面上有一个 TabControl 和 4 个 TabPages。
我有一些身份验证逻辑来显示/隐藏这些 TabPages 在最小化后显示表单时。这种“隐藏”逻辑实质上将删除选项卡,并在表单验证时重新插入它们。
因此,首先将应用程序最小化。我恢复它,我的身份验证失败,因此标签被删除。我再次最小化应用程序,恢复窗口,通过身份验证并插入选项卡。但是,页面中锚定到相对侧的控件(左、右和上、下以允许它们拉伸)似乎已损坏。顶部/左侧位置还可以,但相反位置似乎已超出可见页面!
我猜这都与页面的删除和添加有关,但是有没有人以前见过这个并知道为什么会发生这种情况?? (更重要的是知道解决方法):)
请注意,我隐藏/显示选项卡的代码使用如下函数:-
private void TabControlPageVisible(TabPage page, Boolean show)
{
if (show)
{
if (!tabControlMain.TabPages.Contains(page))
{
tabControlMain.TabPages.Insert(0, page);
page.ResumeLayout();
}
}
else
{
if (tabControlMain.TabPages.Contains(page))
{
page.SuspendLayout();
tabControlMain.TabPages.Remove(page);
}
}
}
干杯! :)
【问题讨论】:
-
摆脱 Suspend/ResumeLayout 调用,看起来很无聊。
-
你为什么要使用最小化/恢复来处理这种逻辑。有更好的方法来做你想做的事。
-
汉斯,我已经在 Suspend/ResumeLayout 调用中尝试修复它但无济于事,无论如何删除它们没有任何区别:(
-
Erik,你说有更好的方法很好,但请赐教?
标签: c# winforms layout tabcontrol anchor