我正在使用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();
}
我需要文本框的插入符号,无论我在哪里拖动鼠标光标都不会掉线。为什么文本框的插入符号不会一直跟随鼠标光标到现有文本的末尾,我该怎么做才能解决它?