Treenode 이름 및 텍스트 속성에 대한 최대 길이를 어떻게 설정할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1298228

  •  18-09-2019
  •  | 
  •  

문제

Treenode 이름 및 텍스트 속성에 대한 최대 길이를 어떻게 설정할 수 있습니까? 이것은 사용자가 노드를 추가하여 트리 뷰를 마우스 오른쪽 버튼으로 클릭하여 Treenode 이름의 최대 길이는 40 숯이어야하는 Windows Forms 응용 프로그램입니다. 현재 나는 이것을 내세 이벤트에서 확인하고 아니오라면 메시지를 던집니다. 숯이 초과합니다. 그러나 요구 사항은 텍스트 상자에서와 같이 메시지 상자를 표시하지 않고 길이를 제한한다고 말합니다.

감사.

도움이 되었습니까?

해결책

TreeView 위에 텍스트 상자를 표시하고 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 텍스트 상자의 최대 길이를 설정하고 현재 선택한 노드에 표시합니다.

    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();
    }

텍스트 상자에 추가 기능을 추가하여 트리 뷰의 너비를 기준으로 올바르게 크기를 추가하고 사용자가 반환 등을 치는 등의 새 텍스트를 수용 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top