拖,使用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;
    }

拖,使用c#将标签文本放入文本框

试试这个:

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;
}