我在VB.NET中使用左对齐的TabControl有一个奇怪的行为。截图:
我想要的是让标签与左侧旋转90度时的标签方式相同。
是否与使用标准XP主题的事实(上帝禁止)有关?任何解决方案只是让它工作? (即使它很难,但我不想要一个具有对比风格的控件,我希望程序看起来一致)
谢谢!
快乐结局:
答案 0 :(得分:4)
好的,我解决了这个问题。如果其他人遇到同样的问题,请使用this control。它在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
This 是该文章的链接。
另一个非常好的方法是SkyBound的多用途VisualStyles组件。似乎二进制文件是免费的,但来源不是,非常公平。我稍后会查看它,但是如果你需要一些视觉方式修复错误,它似乎是一个选择
(来源:skybound.ca)
来自作者:
首先,它取消了XP 主题错误,默默地,有效地和 自动。但它也提供了一个 你可以简单的一组课程 用于绘制自己的控件 Windows XP Theme API。
问题解决了!! = 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);
}
}