每当将标签拖放到文本框内时,我都希望将文本添加到文本框中,到目前为止,我已使用下面的方法完成了该操作。考虑我已经在文本框中有一些文本,现在当我放下标签时,它添加了文本结束,我明白这是因为我添加了textbox = textbox + labelcontents。使用C拖放标签文本到文本框中#
是否有任何其他方式,将文本添加到删除相同的位置,并且所有以前的文本保持不变。我们可以使用位置点吗?
在表单中默认的构造函数:
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;
}
刚刚找到解决方案,其非常简单,我只需要使用光标位置。 'int CursorPos = txtBoxDefaultEnglish.SelectionStart;''txtBoxDefaultEnglish.Text = txtBoxDefaultEnglish.Text.Insert(CursorPos,“[”+(string)e.Data.GetData(DataFormats.Text)+“]”);' –
作为回答并请接受。也许对别人有帮助;) – Sebi
@Nisar,你可以在光标位置插入你的文本,但不能在放置位置 –