gpt4 book ai didi

c# 设置 2 种颜色的树节点文本

转载 作者:太空狗 更新时间:2023-10-30 00:29:04 24 4
gpt4 key购买 nike

我有一个分为 3 个级别的 TreeView 。我在每个组级别中添加了它拥有的 child 的数量。现在我想将该数字设置为不同的颜色或粗体。

例子:

[3]
|_ firstGroup [2]
|_第一个 child
|_ 第二个 child
|_ secondGroup [1]
|_ 第三个 child

这是一个 Windows 窗体应用程序。我认为这是不可能的,但我想确定一下。

最佳答案

我认为您可以通过将 TreeView 控件的 DrawMode 设置为 OwnerDrawText 并在 DrawNode 中执行绘图来完成此操作事件处理程序。

DrawNode 实现示例(在空格处拆分节点字符串,以粗体绘制第一个元素,字符串的其余部分使用常规字体,如果没有空格,我们让操作系统代替绘制):

private void TreeView_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
string regex = @"^.*\s+\[\d+\]$";
if (Regex.IsMatch(e.Node.Text, regex, RegexOptions.Compiled))
{
string[] parts = e.Node.Text.Split(' ');
if (parts.Length > 1)
{
string count = parts[parts.Length - 1];
string text = " " + string.Join(" ", parts, 0, parts.Length - 1);
Font normalFont = e.Node.TreeView.Font;

float textWidth = e.Graphics.MeasureString(text, normalFont).Width;
e.Graphics.DrawString(text,
normalFont,
SystemBrushes.WindowText,
e.Bounds);

using (Font boldFont = new Font(normalFont, FontStyle.Bold))
{
e.Graphics.DrawString(count,
boldFont,
SystemBrushes.WindowText,
e.Bounds.Left + textWidth,
e.Bounds.Top);
}
}
}
else
{
e.DrawDefault = true;
}
}

注意:您可能希望向保存粗体字体的表单添加变量或属性,而不是为绘制的每个 TreeNode 重新创建和处理它。

关于c# 设置 2 种颜色的树节点文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1294014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com