【问题标题】:Winforms Treeview text being cutoffWinforms Treeview 文本被截断
【发布时间】:2015-10-22 18:56:34
【问题描述】:

我在通知应用程序中使用树视图。当我加载包含大量文本的节点时,文本被截断为 12 个字符。如何防止这种情况发生?

使用的字体: Microsoft 无衬线字体,12pt,样式=粗体

我尝试过使用普通字体,但没有成功。

这是我的代码(我已经用另一个类覆盖了树节点):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;

namespace Repetrel
{
    public class ActionObjectTreeNode: TreeNode
    {
    public string fileName = null;

    private ActionObject actionObject = new ActionObject();

    public string Text {
        get { return base.Text; }
        set {
            if (value.Equals(base.Text) == false && base.Text!="")
            {
                Trace.WriteLine("error detected");
            }
            base.Text = value;
        }
    }

    public ActionObject ACTIONOBJECT
    {
        get
        {
            return actionObject;
        }

        set
        {
            actionObject = value;
            if (value == null && TREENODETYPE != TreeNodeType.Project) {
                System.Diagnostics.Trace.WriteLine("null assigned to actionobject");
            }
        }
    }
    public TreeNodeType TREENODETYPE { get; set; }
    public TreeNodeType LOCKEDNODETYPE { get; set; }
    public DrillActionGroup ACTIONPROPERTIES { get; set; }

    public ActionObjectTreeNode()
    {

    }

    public ActionObjectTreeNode(string text)
    {
        this.Text = text;
    }

    public ActionObjectTreeNode(ActionObject actionObject)
    {
        if (actionObject != null)
        {
            this.Text = actionObject.TEXT;
            this.ACTIONOBJECT = actionObject;
        }
    }


    public bool guidMatch(string _guid)
    {
        return ACTIONOBJECT.getGuid().Equals(_guid);       
    }

}

}

【问题讨论】:

  • 最好把能重现问题的代码展示给我们。
  • 代码没有重现问题。你是否压倒了其他任何东西?您应该会看到有关在覆盖 Text 属性中使用“new”关键字的警告。
  • @LarsTech - 现在完整代码。我没有使用 new 关键字。
  • this.Text = actionObject.TEXT; ?我会在那条线上放一个调试器,看看那个值是什么。
  • @LarsTech - 没有调用该代码。我直接通过'Text'设置字符串,它被覆盖了。

标签: c# winforms treeview


【解决方案1】:

将树视图的字体大小属性值设置为高于您以编程方式设置的字体大小。

https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.treenode.nodefont?view=netframework-4.8

【讨论】:

  • 如果您包含图像,则标记包含感叹号。如果你删除它,标记只会呈现一个链接。
【解决方案2】:

当您以编程方式将节点的 Font 属性设置为 Bold 值时,节点的文本可能会被截断。

在以编程方式将节点的 Font 属性设置为 Bold 值后,您需要在文本中添加一个空字符串。

例如:

treeView1.Nodes[0].NodeFont = new System.Drawing.Font("Microsoft Sans Serif", 12pt, System.Drawing.FontStyle.Bold);
treeView1.Nodes[0].Text += string.Empty;

【讨论】:

  • 我也尝试过纯文本。我得到了相同的结果。
【解决方案3】:

显然我正在裁剪树视图本身内的文本。问题解决了。感谢大家的帮助!

【讨论】:

  • 面临类似问题。裁剪文本是什么意思以及如何禁用它?
  • @Zaynmalik 已经有一段时间了。如果我的记忆恢复,我会告诉你的。
猜你喜欢
  • 2020-08-24
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
相关资源
最近更新 更多