2016-10-27 51 views
1

每當將標籤拖放到文本框內時,我都希望將文本添加到文本框中,到目前爲止,我已使用下面的方法完成了該操作。考慮我已經在文本框中有一些文本,現在當我放下標籤時,它添加了文本結束,我明白這是因爲我添加了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; 
    } 
+0

剛剛找到解決方案,其非常簡單,我只需要使用光標位置。 'int CursorPos = txtBoxDefaultEnglish.SelectionStart;''txtBoxDefaultEnglish.Text = txtBoxDefaultEnglish.Text.Insert(CursorPos,「[」+(string)e.Data.GetData(DataFormats.Text)+「]」);' –

+0

作爲回答並請接受。也許對別人有幫助;) – Sebi

+0

@Nisar,你可以在光標位置插入你的文本,但不能在放置位置 –

回答

1

試試這個:

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

它是一個很好的解決方案,一件小事,如果我們在文本之間放置標籤,它會移動光標到結束的文本框。我們如何在插入後將光標保持在位置,而不是將其移動到完整行的末尾。我希望你明白我的觀點。 –

+0

查看我的更新回答:) –