【问题标题】:.NET TabControl Container Anchoring issues.NET TabControl 容器锚定问题
【发布时间】: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


【解决方案1】:

您是在每个页面上使用布局方法还是只是定位控件?一个(麻烦的)解决方案是存储每个控件的位置。一个更好的主意是使用布局。

【讨论】:

  • 我只是手动定位控件。我没有在代码中使用太多布局,但是如果我找不到解决方案,我可能不得不做类似的事情,并且希望它会在涉及到表单大小时考虑到它的行为方式重绘它们!
猜你喜欢
  • 2016-04-09
  • 1970-01-01
  • 2013-06-22
  • 2019-09-09
  • 2014-01-28
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多