Winforms TabControl对齐问题

时间:2011-02-07 23:47:21

标签: c# winforms tabcontrol tabpage

当我将TabControl对齐设置为LeftRight时,它会在标签按钮和标签页区域之间留下这么大的空间。如何摆脱这个无用的空间?

TabControl.Appearance设置为Buttons,因为如果设置为Normal,则按钮上的文字会消失。

tabcontrol

更新:
当我将TabControl.Alignment设置为Bottom并将TabControl.Appearance设置为Normal时,按钮看起来是倒置的(橙色线应位于下方)
tab control

当我将TabControl.Alignment设置为BottomTabControl.Appearance设置为Buttons时,TabPage上没有区域可以设置控件
enter image description here

2 个答案:

答案 0 :(得分:5)

这是本机选项卡控件的XP视觉样式实现的一个众所周知的问题,只有与顶部对齐的选项卡才能正确呈现。直到Windows 7才解决此错误。解决方法是有选择地关闭样式。在项目中添加一个新类并粘贴下面显示的代码。编译。将新控件从工具箱顶部拖放到表单上,然后根据自己的喜好更改Alignment属性。它不会比那更漂亮。

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

class FixedTabControl : TabControl {

    protected override void OnHandleCreated(EventArgs e) {
        SetWindowTheme(this.Handle, "", "");
        base.OnHandleCreated(e);
    }

    [DllImportAttribute("uxtheme.dll")]
    private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist);
}

答案 1 :(得分:0)

Microsoft documentation Remarks related to this issue

  

当Alignment属性设置为Left或Right时,多行   属性会自动设置为true。

     

将外观属性设置为FlatButtons时,它仅出现   例如,当Alignment属性设置为Top时。否则,   外观属性显示为设置为“按钮”值。

     

将外观属性设置为按钮时,还必须将   将Alignment属性设置为Top,以便正确显示按钮。

     

注意

     

将外观属性设置为按钮时,还必须将   对齐属性为“顶部”,以便显示标签页内容   正确地。此外,启用视觉样式后,   Alignment属性设置为除Top之外的其他选项卡内容   可能无法正确呈现。