如何设置 TreeNode Name 和 text 属性的 MaxLength?

发布于 2024-08-02 02:33:55 字数 207 浏览 3 评论 0原文

如何设置 TreeNode Name 和 text 属性的 MaxLength? 这是一个 Windows 窗体应用程序,用户右键单击树视图来添加节点,树节点名称的最大长度应为 40 个字符。 目前我在 AfterlabelEdit 事件中检查这一点,如果没有则抛出一条消息。 字符数超过。 但要求要求限制长度而不显示消息框,就像我们在文本框中所做的那样。

谢谢。

How can set MaxLength for TreeNode Name and text property? This is a windows forms application, where user right clicks a treeview to add a node and the maxlength of the treenode name should be 40 chars. Currently I check this in AfterlabelEdit event, and throw a message if no. of chars exceeds. But the requiremnet says to limit the length without showing the message box as we do in textboxes.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

输什么也不输骨气 2024-08-09 02:33:55

您可以在树视图上显示一个文本框并在其上设置 MaxLength。

一种方法是创建一个具有以下形式的文本框:

    private TextBox _TextBox;

    public Form1()
    {
        InitializeComponent();
        _TextBox = new TextBox();
        _TextBox.Visible = false;
        _TextBox.LostFocus += new EventHandler(_TextBox_LostFocus);
        _TextBox.Validating += new CancelEventHandler(_TextBox_Validating);
        this.Controls.Add(_TextBox);
    }

    private void _TextBox_LostFocus(object sender, EventArgs e)
    {
        _TextBox.Visible = false;
    }


    private void _TextBox_Validating(object sender, CancelEventArgs e)
    {
        treeView1.SelectedNode.Text = _TextBox.Text;
    }

然后在树视图中 BeforeLabelEdit 设置文本框的 MaxLength 并将其显示在当前选定的节点上:

    private void treeView1_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e)
    {
        _TextBox.MaxLength = 10;

        e.CancelEdit = true;
        TreeNode selectedNode = treeView1.SelectedNode;
        _TextBox.Visible = true;
        _TextBox.Text = selectedNode.Text;
        _TextBox.SelectAll();
        _TextBox.BringToFront();
        _TextBox.Left = treeView1.Left + selectedNode.Bounds.Left;
        _TextBox.Top = treeView1.Top + selectedNode.Bounds.Top;
        _TextBox.Focus();
    }

您可能希望向文本框添加一些附加功能因此它的大小根据树视图的宽度正确调整,并且它也接受用户按回车键时的新文本等。

You could display a text box over the treeview and set the MaxLength on that.

One way to do that is create a text box with the form:

    private TextBox _TextBox;

    public Form1()
    {
        InitializeComponent();
        _TextBox = new TextBox();
        _TextBox.Visible = false;
        _TextBox.LostFocus += new EventHandler(_TextBox_LostFocus);
        _TextBox.Validating += new CancelEventHandler(_TextBox_Validating);
        this.Controls.Add(_TextBox);
    }

    private void _TextBox_LostFocus(object sender, EventArgs e)
    {
        _TextBox.Visible = false;
    }


    private void _TextBox_Validating(object sender, CancelEventArgs e)
    {
        treeView1.SelectedNode.Text = _TextBox.Text;
    }

Then in the tree view BeforeLabelEdit set the MaxLength of the text box and show it over the currently selected Node:

    private void treeView1_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e)
    {
        _TextBox.MaxLength = 10;

        e.CancelEdit = true;
        TreeNode selectedNode = treeView1.SelectedNode;
        _TextBox.Visible = true;
        _TextBox.Text = selectedNode.Text;
        _TextBox.SelectAll();
        _TextBox.BringToFront();
        _TextBox.Left = treeView1.Left + selectedNode.Bounds.Left;
        _TextBox.Top = treeView1.Top + selectedNode.Bounds.Top;
        _TextBox.Focus();
    }

You'll probably want to add some additional functionality to the text box so it sizes correctly based on the width of the tree view and also so it accepts the new text on the user hitting return, etc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文