TX Text Control Source Code Library

Drag and Drop Text in TX Text Control .NET for Windows Forms

Dragging and dropping text can be helpful to rearrange large portions of text. It is a very easy way to move text around in word processing applications.

TX Text Control provides all the events needed to implement this behavior. This sample uses 3 different events to control drag and drop: MouseDown, MouseUp and MouseMove.

On the MouseUp event, the selected text is stored in a separate Selection object that holds the currently selected text, it's character index start position and length.

private void textControl1_MouseUp(object sender, MouseEventArgs e) { if (dragAction == false) { fillSyncSelection(); } ...
private void fillSyncSelection() { syncSelection.Start = textControl1.Selection.Start; syncSelection.Length = textControl1.Selection.Length; syncSelection.Text = textControl1.Selection.Text; }

If the user clicks into the selected text, a boolean flag is activated. This flag indicates that a drag and drop action is currently being performed:

private void textControl1_MouseDown(object sender, MouseEventArgs e) { if (syncSelection.Length > 0 && (textControl1.Selection.Start >= syncSelection.Start && textControl1.Selection.Start <= syncSelection.Start + syncSelection.Length)) { dragAction = true; textControl1.CaretWidth = 2; } }

In the MouseMove event, the input position is set to the current mouse position.

private void textControl1_MouseMove(object sender, MouseEventArgs e) { if( dragAction == true) { textControl1.Selection.Length = 0; textControl1.InputPosition = new TXTextControl.InputPosition(new Point((e.X * DPIX) + textControl1.ScrollLocation.X, (e.Y * DPIX) + textControl1.ScrollLocation.Y)); } }

When the mouse button is released again, the selected text is copied to the current input position and removed from the original position:

private void textControl1_MouseUp(object sender, MouseEventArgs e) { ... else { int start = syncSelection.Start; if (textControl1.Selection.Start < syncSelection.Start) { start = syncSelection.Start + syncSelection.Text.Length; } textControl1.Selection.Text = syncSelection.Text; int inputPos = textControl1.Selection.Start; textControl1.Select(start, syncSelection.Length); textControl1.Selection.Text = ""; textControl1.Selection.Start = inputPos; textControl1.CaretWidth = 1; syncSelection = new TXTextControl.Selection(); dragAction = false; } }

The minimum requirements for this sample application are TX Text Control .NET for Windows Forms trial version and Visual Studio 2005.

 
 

Products

Support

Downloads

Corporate

Buy Now