2010-01-08 115 views
0

试图让tabcontrol的每个选项卡上的文本垂直显示。因为我从来没有进入控制,什么不是,我被困住了。找到一些代码让文本显示,就好像它被旋转到左边一样。我希望它能够显示,就好像它在标签上右旋(垂直)一样。骨架代码如下:右对齐TabControl上的垂直文本

Protected Sub OnDrawItem(ByVal sender As Object, ByVal e As DrawItemEventArgs) Handles TabControl1.DrawItem 
    'MyBase.OnDrawItem(e)' 
    Dim tc As TabControl = DirectCast(sender, TabControl) 
    Dim g As Graphics = e.Graphics 
    Dim rectf As RectangleF 
    Dim isVertical As Boolean = (tc.Alignment > TabAlignment.Bottom) 
    Dim off As Integer = 1 : If (e.State And sel) = sel Then off = -1 
    Dim textFormat As New StringFormat(StringFormatFlags.NoClip _ 
           Or StringFormatFlags.NoWrap) 
    With textFormat 
     .HotkeyPrefix = System.Drawing.Text.HotkeyPrefix.Show 
     .Alignment = StringAlignment.Center 
     .LineAlignment = StringAlignment.Center 
    End With 


    With e.Bounds 
     If isVertical Then 
      ' tabs are aligned left or right' 
      If tc.Alignment = TabAlignment.Left Then 
       Dim m As New System.Drawing.Drawing2D.Matrix 
       m.Translate(0, .Height - tc.TabPages(0).Top) 
       m.RotateAt(270, New PointF(.X, .Y)) 
       g.Transform = m 
       rectf = New RectangleF(.Left - tc.TabPages(0).Top, .Top + off, _ 
             .Height, .Width) 
      ElseIf tc.Alignment = TabAlignment.Right Then 
       'Dim m As New System.Drawing.Drawing2D.Matrix' 
       'm.Translate(0, .Height - tc.TabPages(0).Top)' 
       'm.RotateAt(270, New PointF(.X, .Y))' 
       'g.Transform = m' 
       'rectf = New RectangleF(.Left - tc.TabPages(0).Top, .Top + off, _' 
       '      .Height, .Width)' 
       ' Here is where the tab should go to rotate the text about 180 degrees' 
      End If 
     Else 
      ' tabs are aligned top or bottom' 
      rectf = New RectangleF(.X, .Y + off, .Width, .Height) 
     End If 
    End With 


    Dim col As Color 
    Select Case (e.State And notsf) 
     Case DrawItemState.Disabled 
      col = SystemColors.GrayText 
     Case DrawItemState.HotLight 
      col = SystemColors.HotTrack 
     Case Else 
      col = SystemColors.MenuText 
    End Select 


    g.DrawString(tc.TabPages(e.Index).Text, _ 
       tc.Font, _ 
       New SolidBrush(col), _ 
       rectf, _ 
       textFormat) 

    If isVertical Then g.ResetTransform() 

    If (e.State And selfoc) = selfoc Then 
     ControlPaint.DrawFocusRectangle(g, _ 
        [Rectangle].Inflate(e.Bounds, -1, -1)) 
    End If 
    textFormat.Dispose() 
End Sub 

回答

0

我不使用VB或WinForms,因此以下内容将不在代码中,并包含一些猜测。在没有屏幕截图的情况下,很难知道与您的描述所需要的不同之处。我是否正确地认为你只是希望你的标签的标题文字以另一种方式旋转180度,即文本的“顶部”与标签的左侧或标签的右侧哪一个不是现在的哪一个?

在分支If tc.Alignment = TabAlignment.Right Then ...文本正由RotateAt通话旋转:

m.RotateAt(270, New PointF(.X, .Y)) 

,你会想改变270 90有在另一个方向旋转的文本。

(你熟悉设立这样的变换矩阵?同样的原则也适用于OpenGL或DirectX编程。如果没有,评论,我会解释/链接)。

如果你只是这样做,那么机会文本是不可见的,因为它将被旋转以关闭您正在绘制的位图。您需要翻译它,以便文本的开头位于右侧角落。这就是我上面提到的猜测的地方:我不熟悉你使用的图形框架的坐标系,所以我不知道要翻译哪个方向。对不起,我不能给你工作代码,但我只是没有Visual Studio和一个.NET Winforms控件来试验:)我可以看到你已经在这里沿着这些线做了一些事情:

m.Translate(0, .Height - tc.TabPages(0).Top) 

我的猜测是你需要改变这个,所以X坐标(0)是.Width.Width - [text height, calculate this],你可能还需要考虑Y坐标中的文本宽度。 (文本“高度”和“宽度”好像文本是水平/正常绘制的。)我很确定.net的绘图框架可能包括GraphicsTextHeight(...)TextWidth(...)方法,如果它不是这些名称我是确定他们很容易找到:) TextRect()也许? (如果我坐在你的电脑上,试图通过纯粹的猜测来弄明白这一点,我会编写这段代码,这样它就可以将文本旋转到一个大的位图的中间位置,对其进行修改,使其位于左上方位于矩形内部的右图中的位图是选项卡的大小,然后将代码移动到制表符绘制方法中。保存所有带有一个小小选项卡并运行它的麻烦,然后执行“我的文本在哪里?“当它被隐藏,因为它被绘制在错误的坐标上。)

0

我假设你正在使用XAML,这可以实现通过样式

添加这些样式:

<!-- Simple Splitter Style --> 
    <Style x:Key="SimpleSplitterStyle" TargetType="controls:GridSplitter"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="controls:GridSplitter"> 
        <Grid x:Name="Root" IsHitTestVisible="{TemplateBinding IsEnabled}"> 
         <Rectangle Fill="{TemplateBinding Background}" StrokeThickness="0"/> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <!-- Tab Item Header (Right) --> 
    <Style x:Key="RightTabItemHeader" TargetType="ContentControl"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ContentControl"> 
        <ContentPresenter Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" ContentTemplate="{TemplateBinding ContentTemplate}"> 
         <layout:LayoutTransformer > 
          <layout:LayoutTransformer.LayoutTransform> 
           <RotateTransform Angle="90"/> 
          </layout:LayoutTransformer.LayoutTransform> 
          <ContentPresenter Margin="5,0,5,0" /> 
         </layout:LayoutTransformer> 
        </ContentPresenter> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <!-- Tab Item Header (Left) --> 
    <Style x:Key="LeftTabItemHeader" TargetType="ContentControl"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ContentControl"> 
        <ContentPresenter Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" ContentTemplate="{TemplateBinding ContentTemplate}"> 
         <layout:LayoutTransformer > 
          <layout:LayoutTransformer.LayoutTransform> 
           <RotateTransform Angle="-90"/> 
          </layout:LayoutTransformer.LayoutTransform> 
          <ContentPresenter Margin="5,0,5,0" /> 
         </layout:LayoutTransformer> 
        </ContentPresenter> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <!-- Tab Item Style --> 
    <Style x:Key="TabItemStyle" TargetType="controls:TabItem"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="controls:TabItem"> 
        <Grid x:Name="Root"> 
         <Grid x:Name="TemplateTopSelected" Visibility="Collapsed" Canvas.ZIndex="1"> 
          <Border Margin="-2,-2,-2,0" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1,1,1,0" CornerRadius="3,3,0,0"> 
           <Border BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="1,1,0,0"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <Rectangle Fill="#FFFFFFFF" Margin="0,0,0,-2"/> 
             <ContentControl x:Name="HeaderTopSelected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="FocusVisualTop" Margin="-2,-2,-2,0" IsHitTestVisible="false" Visibility="Collapsed" BorderBrush="#FF6DBDD1" BorderThickness="1,1,1,0" CornerRadius="3,3,0,0"/> 
          <Border x:Name="DisabledVisualTopSelected" Margin="-2,-2,-2,0" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="3,3,0,0"/> 
         </Grid> 
         <Grid x:Name="TemplateTopUnselected" Visibility="Collapsed"> 
          <Border x:Name="BorderTop" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" CornerRadius="3,3,0,0"> 
           <Border x:Name="GradientTop" BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="1,1,0,0"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <ContentControl x:Name="HeaderTopUnselected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="DisabledVisualTopUnSelected" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="3,3,0,0"/> 
         </Grid> 
         <Grid x:Name="TemplateBottomSelected" Visibility="Collapsed" Canvas.ZIndex="1"> 
          <Border Margin="-2,0,-2,-2" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1,0,1,1" CornerRadius="0,0,3,3"> 
           <Border BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="0,0,1,1"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <Rectangle Fill="#FFFFFFFF" Margin="0,-2,0,0"/> 
             <ContentControl x:Name="HeaderBottomSelected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="FocusVisualBottom" Margin="-2,0,-2,-2" IsHitTestVisible="false" Visibility="Collapsed" BorderBrush="#FF6DBDD1" BorderThickness="1,0,1,1" CornerRadius="0,0,3,3"/> 
          <Border x:Name="DisabledVisualBottomSelected" Margin="-2,0,-2,-2" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="0,0,3,3"/> 
         </Grid> 
         <Grid x:Name="TemplateBottomUnselected" Visibility="Collapsed"> 
          <Border x:Name="BorderBottom" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" CornerRadius="0,0,3,3"> 
           <Border x:Name="GradientBottom" BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="0,0,1,1"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <ContentControl x:Name="HeaderBottomUnselected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="DisabledVisualBottomUnSelected" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="0,0,3,3"/> 
         </Grid> 
         <Grid x:Name="TemplateLeftSelected" Visibility="Collapsed" Canvas.ZIndex="1"> 
          <Border Margin="-2,-2,0,-2" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1,1,0,1" CornerRadius="3,0,0,3"> 
           <Border BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="1,0,0,1"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <Rectangle Fill="#FFFFFFFF" Margin="0,0,-2,0"/> 
             <ContentControl x:Name="HeaderLeftSelected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}" Style="{StaticResource LeftTabItemHeader}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="FocusVisualLeft" Margin="-2,-2,0,-2" IsHitTestVisible="false" Visibility="Collapsed" BorderBrush="#FF6DBDD1" BorderThickness="1,1,0,1" CornerRadius="3,0,0,3"/> 
          <Border x:Name="DisabledVisualLeftSelected" Margin="-2,-2,0,-2" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="3,0,0,3"/> 
         </Grid> 
         <Grid x:Name="TemplateLeftUnselected" Visibility="Collapsed"> 
          <Border x:Name="BorderLeft" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="3,0,0,3"> 
           <Border x:Name="GradientLeft" BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="1,0,0,1"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <ContentControl x:Name="HeaderLeftUnselected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}" Style="{StaticResource LeftTabItemHeader}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="DisabledVisualLeftUnSelected" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="3,0,0,3"/> 
         </Grid> 
         <Grid x:Name="TemplateRightSelected" Visibility="Collapsed" Canvas.ZIndex="1"> 
          <Border Margin="0,-2,-2,-2" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,1,1,1" CornerRadius="0,3,3,0"> 
           <Border BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="0,1,1,0"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <Rectangle Fill="#FFFFFFFF" Margin="-2,0,0,0"/> 
             <ContentControl x:Name="HeaderRightSelected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}" Style="{StaticResource RightTabItemHeader}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="FocusVisualRight" Margin="0,-2,-2,-2" IsHitTestVisible="false" Visibility="Collapsed" BorderBrush="#FF6DBDD1" BorderThickness="0,1,1,1" CornerRadius="0,3,3,0"/> 
          <Border x:Name="DisabledVisualRightSelected" Margin="0,-2,-2,-2" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="0,3,3,0"/> 
         </Grid> 
         <Grid x:Name="TemplateRightUnselected" Visibility="Collapsed"> 
          <Border x:Name="BorderRight" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" CornerRadius="0,3,3,0"> 
           <Border x:Name="GradientRight" BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="0,1,1,0"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <ContentControl x:Name="HeaderRightUnselected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}" Style="{StaticResource RightTabItemHeader}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="DisabledVisualRightUnSelected" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="0,3,3,0"/> 
         </Grid> 
         <Border x:Name="FocusVisualElement" Margin="-1" IsHitTestVisible="false" Visibility="Collapsed" BorderBrush="#FF6DBDD1" BorderThickness="1" CornerRadius="3,3,0,0"/> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

,然后你可以指定这个到每个标签项:

  <controls:TabControl TabStripPlacement="Right" Margin="4"> 
      <controls:TabItem Header="First" Style="{StaticResource TabItemStyle}"> 
       <controls:TreeView> 
        <controls:TreeViewItem Header="Parent 1" /> 
        <controls:TreeViewItem Header="Parent 2"> 
         <controls:TreeViewItem Header="Child 1"> 
          <controls:TreeViewItem Header="Grandchild 1" /> 
         </controls:TreeViewItem> 
        </controls:TreeViewItem> 
        <controls:TreeViewItem Header="Parent 3"> 
         <controls:TreeViewItem Header="Child 1"> 
          <controls:TreeViewItem Header="Grandchild 1" /> 
          <controls:TreeViewItem Header="Grandchild 2" /> 
         </controls:TreeViewItem> 
        </controls:TreeViewItem> 
       </controls:TreeView> 
      </controls:TabItem> 
      <controls:TabItem Header="Second" Style="{StaticResource TabItemStyle}"> 
       <controls:TreeView> 
        <controls:TreeViewItem Header="Parent 1" /> 
        <controls:TreeViewItem Header="Parent 2"> 
         <controls:TreeViewItem Header="Child 1"> 
          <controls:TreeViewItem Header="Grandchild 1" /> 
         </controls:TreeViewItem> 
        </controls:TreeViewItem> 
        <controls:TreeViewItem Header="Parent 3"> 
         <controls:TreeViewItem Header="Child 1"> 
          <controls:TreeViewItem Header="Grandchild 1" /> 
          <controls:TreeViewItem Header="Grandchild 2" /> 
         </controls:TreeViewItem> 
        </controls:TreeViewItem> 
        <controls:TreeViewItem Header="Parent 4"> 
         <controls:TreeViewItem Header="Child 1"> 
          <controls:TreeViewItem Header="Grandchild 1" /> 
          <controls:TreeViewItem Header="Grandchild 2" /> 
          <controls:TreeViewItem Header="Grandchild 3" /> 
          <controls:TreeViewItem Header="Grandchild 4" /> 
          <controls:TreeViewItem Header="Grandchild 5" /> 
          <controls:TreeViewItem Header="Grandchild 6" /> 
          <controls:TreeViewItem Header="Grandchild 7" /> 
          <controls:TreeViewItem Header="Grandchild 8" /> 
         </controls:TreeViewItem> 
        </controls:TreeViewItem> 
       </controls:TreeView> 
      </controls:TabItem> 
     </controls:TabControl> 

现在您可以从顶部/底部/右侧/左侧进行更改,文本将在右侧/左侧垂直吨。在这个例子中,我只剩下顶部和底部,但是这应该给你很多关于如何控制这些标签的想法。

+1

不使用xaml ...这是为winforms – bbqchickenrobot 2010-01-29 05:57:13