【问题标题】:How can set MaxLength for TreeNode Name and text property?如何为 TreeNode Name 和 text 属性设置 MaxLength?
【发布时间】:2009-08-19 07:06:44
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: winforms treenode


    【解决方案1】:

    您可以在树视图上显示一个文本框并在其上设置 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();
        }
    

    您可能希望向文本框添加一些附加功能,以便根据树视图的宽度正确调整大小,并在用户点击返回时接受新文本等。

    【讨论】:

      猜你喜欢
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多