1

TreeNode Name と text プロパティの MaxLength を設定するにはどうすればよいですか? これは Windows フォーム アプリケーションです。ユーザーはツリービューを右クリックしてノードを追加し、ツリーノード名の最大長は 40 文字にする必要があります。現在、AfterlabelEdit イベントでこれを確認し、いいえの場合はメッセージをスローします。文字数を超えています。しかし、requiremnet では、テキスト ボックスで行うように、メッセージ ボックスを表示せずに長さを制限するように指示されています。

ありがとう。

4

1 に答える 1

0

ツリービューの上にテキスト ボックスを表示し、その上に MaxLength を設定できます。

これを行う 1 つの方法は、次のフォームでテキスト ボックスを作成することです。

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

テキスト ボックスに機能を追加して、ツリー ビューの幅に基づいてサイズを正しく設定し、ユーザーがリターン キーを押したときに新しいテキストを受け入れるようにすることをお勧めします。

于 2009-08-20T17:13:30.253 に答える