TextBox中的C#.NET WinForms Caret不会跟随TextBox.DragDrop();

时间:2017-05-12 22:53:40

标签: c# .net textbox cursor caret

我正在使用VS 2017中的C#WinForms .NET应用程序,我正在设计一个功能,其中文本从另一个表单上的表单拖动到文本框。理想情况下,文本应该放入文本框的插入符号的文本框中,该文本框位于鼠标拖动光标的任何位置。问题是,插入符号不会比文本框中最后一个字符之前的位置更进一步。

实施例: 文本框包含文本“这是一个测试”。我将一个包含单个字母“A”的标签从另一个表单拖到包含上述文本的文本框中。如果我将鼠标拖到现有文本之前或之间的任何位置,“A”将落入正确的位置。但是,如果我输入文本框将“A”拖动到文本框中文本右侧的某个点,则文本框的插入符号将仅在结束时段之前。因此,如果我将“A”拖到最右边的文本框中,文本框的文本将变为“This is a TestA”。而不是“这是一个测试。”。

这是DragDrop,DragEnter和DragOver事件的代码:

    private void txtCAR_DragDrop(object sender, DragEventArgs e)
    {
        if (btnUpdateQuestion.Text == "UPDATE!" || btnNewQuestion.Text == "Add Question")
        {
            txtCAR.Text = txtCAR.Text.Insert(txtCAR.SelectionStart, (string)e.Data.GetData(DataFormats.Text));
            int index = txtCAR.GetCharIndexFromPosition(txtCAR.PointToClient(Cursor.Position));
        }
    }

    private void txtCAR_DragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.Text)) e.Effect = DragDropEffects.Copy;
    }

    private void txtCAR_DragOver(object sender, DragEventArgs e)
    {

        int index = txtCAR.GetCharIndexFromPosition(txtCAR.PointToClient(Cursor.Position));
        txtCAR.SelectionStart = index;
        txtCAR.SelectionLength = 0;
        txtCAR.Focus();
    }

我需要文本框的插入符号,无论我在哪里拖动鼠标光标都不会掉线。为什么文本框的插入符号不会一直跟随鼠标光标到现有文本的末尾,我该怎么做才能解决它?

0 个答案:

没有答案