我在 VB.NET 中使用左对齐的 TabControl 有一个奇怪的行为。截屏:
我想要的是让选项卡的方式与向左旋转 90 度时的方式相同。
这是否与我不(上帝保佑)使用标准 XP 主题的事实有关?任何解决方案让它工作?(即使很难,但我不想要一个具有对比风格的控件,我希望程序看起来一致)
谢谢!
美好的结局:
我在 VB.NET 中使用左对齐的 TabControl 有一个奇怪的行为。截屏:
我想要的是让选项卡的方式与向左旋转 90 度时的方式相同。
这是否与我不(上帝保佑)使用标准 XP 主题的事实有关?任何解决方案让它工作?(即使很难,但我不想要一个具有对比风格的控件,我希望程序看起来一致)
谢谢!
美好的结局:
好的,我解决了这个问题。如果其他人有同样的问题,请使用此控件。它在 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
是的,这是选项卡控件的视觉样式渲染器中的一个错误。看起来你已经找到了替代品。另一种影响较小的方法是选择性地禁用控件的视觉样式。它将恢复为战舰灰色,正确绘制垂直标签。标签页内容仍将正确呈现。
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);
}
}