VB.NET中TabControl对齐的问题

时间:2009-12-18 18:33:36

标签: vb.net winforms tabcontrol alignment visual-styles

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

alt text

我想要的是让标签与左侧旋转90度时的标签方式相同。

是否与使用标准XP主题的事实(上帝禁止)有关?任何解决方案只是让它工作? (即使它很难,但我不想要一个具有对比风格的控件,我希望程序看起来一致)

谢谢!

快乐结局:

alt text

2 个答案:

答案 0 :(得分:4)

好的,我解决了这个问题。如果其他人遇到同样的问题,请使用this control。它在MIT许可下是免费的。作者截图:

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组件。似乎二进制文件是免费的,但来源不是,非常公平。我稍后会查看它,但是如果你需要一些视觉方式修复错误,它似乎是一个选择 alt text
(来源:skybound.ca

来自作者:

  

首先,它取消了XP   主题错误,默默地,有效地和   自动。但它也提供了一个   你可以简单的一组课程   用于绘制自己的控件   Windows XP Theme API。

检查作者的this.more

问题解决了!! = d

答案 1 :(得分:2)

是的,它是制表符控件的视觉样式渲染器中的错误。看起来你已经找到了替代品。另一种影响较小的方法是有选择地禁用控件的视觉样式。它将恢复战斗灰色,正确绘制垂直标签。标签页内容仍可正常呈现。

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);
  }
}