2

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

替代文字

我想要的是让选项卡的方式与向左旋转 90 度时的方式相同。

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

谢谢!

美好的结局:

替代文字

4

2 回答 2

4

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

替代文字

注意作者做了两个控件。我的建议:第二个对 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
是文章的链接。

另一个非常好的方法是 SkyBound 的多功能 VisualStyles 组件。似乎二进制文件是免费的,但来源不是,非常公平的交易。稍后我会检查它,但如果您需要一些视觉样式错误修复,这似乎是一个选择。(来源:skybound.ca
替代文字

来自作者:

首先,它以静默、高效和自动的方式消除 XP 主题错误。但它也提供了一组简单的类,您可以使用这些类来使用 Windows XP Theme API 绘制您自己的控件。

检查这个以及来自作者的更多信息。

问题解决了!!=D

于 2009-12-18T19:21:11.850 回答
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);
  }
}
于 2009-12-20T16:25:14.960 回答