TextBoxBase::SelectionLength Property
Gets or sets the number of characters selected in the text box.
Assembly: System.Windows.Forms (in System.Windows.Forms.dll)
public: [BrowsableAttribute(false)] property int SelectionLength { virtual int get(); virtual void set(int value); }
| Exception | Condition |
|---|---|
| ArgumentOutOfRangeException | The assigned value is less than zero. |
You can use this property to determine if any characters are currently selected in the text box control before performing operations on the selected text. When the value of the SelectionLength property is set to a value that is larger than the number of characters within the text of the control, the value of the SelectionLength property is set to the entire length of text within the control minus the value of the SelectionStart property (if any value is specified for the SelectionStart property).
Note |
|---|
You can programmatically move the caret within the text box by setting the SelectionStart to the position within the text box where you want the caret to move to and set the SelectionLength property to a value of zero (0). The text box must have focus in order for the caret to be moved. |
The following code example uses TextBox, a derived class. It provides Click event handlers for MenuItem objects that perform Cut, Copy, Paste, and Undo operations. This example requires that a TextBox control named textBox1 has been created.
private: void Menu_Copy( System::Object^ /*sender*/, System::EventArgs^ /*e*/ ) { // Ensure that text is selected in the text box. if ( textBox1->SelectionLength > 0 ) { // Copy the selected text to the Clipboard. textBox1->Copy(); } } void Menu_Cut( System::Object^ /*sender*/, System::EventArgs^ /*e*/ ) { // Ensure that text is currently selected in the text box. if ( !textBox1->SelectedText->Equals( "" ) ) { // Cut the selected text in the control and paste it into the Clipboard. textBox1->Cut(); } } void Menu_Paste( System::Object^ /*sender*/, System::EventArgs^ /*e*/ ) { // Determine if there is any text in the Clipboard to paste into the text box. if ( Clipboard::GetDataObject()->GetDataPresent( DataFormats::Text ) == true ) { // Determine if any text is selected in the text box. if ( textBox1->SelectionLength > 0 ) { // Ask user if they want to paste over currently selected text. if ( MessageBox::Show( "Do you want to paste over current selection?", "Cut Example", MessageBoxButtons::YesNo ) == ::DialogResult::No ) { // Move selection to the point after the current selection and paste. textBox1->SelectionStart = textBox1->SelectionStart + textBox1->SelectionLength; } } // Paste current text in Clipboard into text box. textBox1->Paste(); } } void Menu_Undo( System::Object^ /*sender*/, System::EventArgs^ /*e*/ ) { // Determine if last operation can be undone in text box. if ( textBox1->CanUndo == true ) { // Undo the last operation. textBox1->Undo(); // Clear the undo buffer to prevent last action from being redone. textBox1->ClearUndo(); } }
Available since 1.1
