代码之家  ›  专栏  ›  技术社区  ›  Camilo Martin

VB.NET中的TabControl对齐问题

  •  2
  • Camilo Martin  · 技术社区  · 15 年前

    我在VB.NET中使用了一个左对齐的TabControl,这是一个奇怪的行为。截图:

    alt text

    这是否与我没有(上帝禁止)使用标准XP主题有关?有什么办法可以让它工作吗(即使很难,但我不希望控件具有对比风格,我希望程序看起来一致)

    谢谢

    美满结局:

    alt text

    2 回复  |  直到 15 年前
        1
  •  4
  •   Glorfindel Doug L.    6 年前

    this control

    alt text

    注意,作者制作了两个控件。我的建议:第二个版本对cleartype的支持不正确(它在亚像素渲染后旋转),但它更易于使用,并且具有更好的填充控制。加油

    如果你使用C++,需要它,那就有一种方法。结果图片: alt text http://www.codeguru.com/dbfiles/get_image.php?id=6385&lbl=CXPTABCTRL_GIF&ds=20040309
    作者非常详细地描述了他是如何做到这一点的,这是一个很好的例子: alt text http://www.codeguru.com/dbfiles/get_image.php?id=6385&lbl=CXPTABCTRL_RIGHT_GIF&ds=20040309
    This

    另一个非常好的方法是SkyBound的多用途VisualStyles组件。看起来二进制文件是免费的,但是源代码不是,非常公平。我稍后会检查它,但如果您需要一些visualstyles bug修复,这似乎是一个选择。
    alt text
    skybound.ca )

    作者:

    首先也是最重要的是,它取消了XP 主题bug,安静、高效和 自动地但它也提供了一个 一组简单的类,您可以 Windows XP主题API。

    检查 this . more 来自作者。

    问题解决了=D

        2
  •  2
  •   Hans Passant    15 年前

    是的,这是选项卡控件的视觉样式渲染器中的一个错误。看来你已经找到了替代者。另一种低影响的方法是有选择地禁用控件的视觉样式。它将恢复为战舰灰色,正确绘制垂直标签。选项卡页面内容仍将正确呈现。

    using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    
    public class FixedTabControl : TabControl {
      [DllImportAttribute("uxtheme.dll")]
      private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist);
    
      protected override void OnHandleCreated(EventArgs e) {
        SetWindowTheme(this.Handle, "", "");
        base.OnHandleCreated(e);
      }
    }