温馨提示×

c# treenode能自定义样式吗

c#
小樊
88
2024-12-01 10:25:12
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

是的,您可以在C#中使用WinForms或WPF中的TreeNode来自定义样式。以下是两个平台上的示例:

WinForms:

在WinForms中,您可以通过设置TreeNodeBackColorForeColorFont等属性来自定义样式。例如:

TreeNode node = new TreeNode("Custom Node");
node.BackColor = Color.Red;
node.ForeColor = Color.White;
node.Font = new Font("Arial", 12);

如果您想要为所有TreeNode设置相同的样式,可以重写TreeViewDrawNode方法:

public class CustomTreeView : TreeView
{
    protected override void DrawNode(DrawTreeNodeEventArgs e)
    {
        if (e.Node == null) return;

        e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds);
        e.Graphics.FillRectangle(Brushes.White, e.Bounds.Left, e.Bounds.Top, e.Bounds.Width - 1, e.Bounds.Height - 1);

        e.Graphics.DrawString(e.Node.Text, this.Font, Brushes.Black, e.Bounds.Left, e.Bounds.Top);
    }
}

WPF:

在WPF中,您可以使用StyleTemplate来自定义TreeNode的样式。首先,在Resources中定义一个Style

<Window.Resources>
    <Style TargetType="TreeViewItem">
        <Setter Property="Background" Value="LightGray"/>
        <Setter Property="Foreground" Value="Black"/>
        <Setter Property="FontFamily" Value="Arial"/>
        <Setter Property="FontSize" Value="12"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TreeViewItem">
                    <Grid>
                        <Rectangle x:Name="Border" SnapsToDevicePixels="True" Stroke="Black" StrokeThickness="1" Fill="White"/>
                        <ContentPresenter x:Name="PART_SelectedContentItem" HorizontalAlignment="Left" VerticalAlignment="Center" ContentSource="Header" Margin="3,3,23,3"/>
                        <TextBlock x:Name="PART_Collapsed" Visibility="Hidden" HorizontalAlignment="Center" VerticalAlignment="Center" Text="M" Margin="3,3,23,3"/>
                        <ItemsPresenter x:Name="ItemsHost" HorizontalAlignment="Left" VerticalAlignment="Stretch"/>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsExpanded" Value="False">
                            <Setter TargetName="PART_Collapsed" Value="Visible"/>
                            <Setter TargetName="ItemsHost" Value="Visibility=Hidden"/>
                        </Trigger>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter TargetName="Border" Value="Black"/>
                            <Setter TargetName="PART_SelectedContentItem" Value="Foreground=White"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

然后,在TreeView中使用这个Style

<TreeView Style="{StaticResource CustomTreeViewItemStyle}">
    <TreeViewItem Header="Custom Node"/>
</TreeView>

这样,您就可以根据需要自定义TreeNode的样式了。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:c#控件能自定义样式吗

0