拖,使用c#将标签文本放入文本框
本文关键字:文本 标签 使用 | 更新日期: 2023-09-27 18:15:04
我想在文本框中添加文本,每当标签在文本框中拖放时,到目前为止,我使用以下方法完成了它。考虑我已经在文本框中有一些文本,现在当我放下标签时,它将文本添加到结束,我理解这是因为我添加了textbox=textbox+labelcontents。
是否有其他的方法,将文本添加到相同的位置,而所有先前的文本保持不变。我们可以使用定位点吗?
形式默认构造函数:
lblBreakStartTime.MouseDown += new MouseEventHandler(lblBreakStartTime_MouseDown);
txtBoxDefaultEnglish.AllowDrop = true;
txtBoxDefaultEnglish.DragEnter += new DragEventHandler(txtBoxDefaultEnglish_DragEnter);
txtBoxDefaultEnglish.DragDrop += new DragEventHandler(txtBoxDefaultEnglish_DragDrop);
鼠标放下标签事件:
private void lblBreakStartTime_MouseDown(object sender, MouseEventArgs e)
{
DoDragDrop("START_TIME", DragDropEffects.Copy);
}
文本框事件:
private void txtBoxDefaultEnglish_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text)) e.Effect = DragDropEffects.Copy;
}
private void txtBoxDefaultEnglish_DragDrop(object sender, DragEventArgs e)
{
txtBoxDefaultEnglish.Text = txtBoxDefaultEnglish.Text + " " + "[" + (string)e.Data.GetData(DataFormats.Text) + "]";
txtBoxDefaultEnglish.SelectionStart = txtBoxDefaultEnglish.Text.Length;
}
试试这个:
private void txtBoxDefaultEnglish_DragDrop(object sender, DragEventArgs e)
{
//Get index from dropped location
int selectionIndex = txtBoxDefaultEnglish.GetCharIndexFromPosition(txtBoxDefaultEnglish.PointToClient(new Point(e.X, e.Y)));
string textToInsert = string.Format(" [{0}]", (string)e.Data.GetData(DataFormats.Text));
txtBoxDefaultEnglish.Text = txtBoxDefaultEnglish.Text.Insert(selectionIndex, textToInsert);
txtBoxDefaultEnglish.SelectionStart = txtBoxDefaultEnglish.Text.Length;
//Set cursor start position
txtBoxDefaultEnglish.SelectionStart = selectionIndex;
//Set selction length to zero
txtBoxDefaultEnglish.SelectionLength = 0;
}