2009-08-19 2 views
0

TreeNode 이름 및 텍스트 속성에 대해 MaxLength를 어떻게 설정할 수 있습니까? 이것은 사용자가 노드를 추가하기 위해 treeview를 오른쪽 클릭하고 treenode 이름의 maxlength가 40 자 여야하는 windows 양식 응용 프로그램입니다. 현재 AfterlabelEdit 이벤트에서이를 확인하고 메시지가 없으면 throw합니다. 의 문자가 초과되었습니다. 그러나 requiremnet은 텍스트 상자 에서처럼 메시지 상자를 표시하지 않고 길이를 제한한다고 말합니다.TreeNode 이름 및 텍스트 속성에 대해 MaxLength를 어떻게 설정할 수 있습니까?

감사합니다.

답변

0

트리 뷰 위에 텍스트 상자를 표시하고 그 위에 최대 길이를 설정할 수 있습니다. 트리보기는 텍스트 상자의 최대 길이를 설정 BeforeLabelEdit에 그런

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

현재 선택된 노드에 그것을 보여줍니다 :

그 작업을 수행하는

한 가지 방법은 양식 텍스트 상자를 만드는 것입니다

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

텍스트 상자에 추가 기능을 추가하여 트리보기의 너비를 기반으로 올바르게 크기를 지정하고 사용자가 돌아 오는 등의 새로운 텍스트를 받아들이도록 할 수 있습니다.