У меня есть TreeView и многострочное текстовое поле вместе в той же форме в форме Windows. У меня есть настройка перетаскивания, чтобы я мог перетащить узел из TreeView в текстовое поле и вставить текст в текстовое поле (это работает).Как перемещать вставку в текстовое поле при принятии Drop
Я хотел бы улучшить это, так как при перетаскивании мыши над текстовым полем какой-то индикатор перемещается вдоль текста, показывающего пользователя, в который будет вставлен текст, и когда он упадет, он будет вставлен в эту позицию. В настоящее время я просто помещаю текст в SelectionStart, но операция перетаскивания не обновляет SelectionStart, так что в то время, когда пользователь имел последний указатель.
Вот мой текущий код:
private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
{
if (e.Button != MouseButtons.Left)
return;
object item = e.Item;
treeView1.DoDragDrop(((TreeNode)item).Tag.ToString(), DragDropEffects.Copy | DragDropEffects.Scroll);
}
private void textBox1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.StringFormat))
{
e.Effect = DragDropEffects.Copy | DragDropEffects.Scroll;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void textBox1_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.StringFormat))
{
textBox1.SelectionLength = 0;
textBox1.SelectedText = (string)e.Data.GetData(DataFormats.StringFormat);
}
}
Вот что я искал. Благодаря! –