C# .NET WinForms Caret в TextBox не будет следовать за курсором мыши на TextBox.DragDrop();
Я работаю над приложением C# WinForms .NET в VS 2017 и разрабатываю функцию, с помощью которой текст перетаскивается из формы в текстовое поле другой формы. В идеале текст должен помещаться в текстовое поле на каретке текстового поля, которое следует за курсором перетаскивания мыши, куда бы он ни шел. Проблема в том, что каретка не пойдет дальше точки перед последним символом в текстовом поле.
Пример: текстовое поле содержит текст "Это тест". Я перетащу метку, содержащую одну букву "А", из другой формы в текстовое поле, содержащее вышеупомянутый текст. Если я перетаскиваю указатель мыши непосредственно перед существующим текстом или где-то между ними, буква "А" окажется в нужном месте. Но если я введу текстовое поле, перетаскивая букву "А" в точку справа от текста в текстовом поле, каретка текстового поля будет идти только до точки в конце. Поэтому, если я перетащу "А" в текстовое поле справа, текст этого текстового поля станет "Это 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();
}
Мне нужна каретка текстового поля, куда бы я не перетаскивал курсор мыши. Почему каретка текстового поля не следует за курсором мыши до конца существующего текста и что я могу сделать, чтобы это исправить?