2016-10-27 10 views
1

ラベルをドラッグアンドドロップしてテキストボックスに入れるときは、以下の方法でテキストを入力します。私はすでにテキストボックスにテキストがあると考えています。今は、テキストを最後に追加するラベルをドロップすると、テキストボックス=テキストボックス+ラベルコンテンツを追加していることがわかります。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、" ["+"文字列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

私の更新答えを見てください:) –

関連する問題