私は、ツリーフォームと複数行のテキストボックスをWindowsフォームの同じフォームにまとめています。 TreeViewからノードをテキストボックスにドラッグしてテキストボックスにテキストを挿入できるようにドラッグアンドドロップ設定があります(これは動作しています)。ドロップを受け入れるときにテキストボックスにキャレットを挿入する方法
これは、マウスをテキストボックスの上にドラッグすると、何らかのインジケータがテキストを通って移動し、テキストが挿入される場所を示し、ドロップされたときにその位置に挿入されるようにしたいと考えています。現在、私はSelectionStartにテキストを置いていますが、ドラッグ操作でSelectionStartは更新されないため、最後にカーソルがあった場所に移動します。私はあなたがtextBox1_DragOverイベントを処理を見てみたいと思います
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);
}
}
これは私が探していたものです。ありがとう! –