This documentation is archived and is not being maintained.

TextBoxBase.SelectionStart Property

Gets or sets the starting point of text selected in the text box.

[Visual Basic]
Public Property SelectionStart As Integer
[C#]
public int SelectionStart {get; set;}
[C++]
public: __property int get_SelectionStart();
public: __property void set_SelectionStart(int);
[JScript]
public function get SelectionStart() : int;
public function set SelectionStart(int);

Property Value

The starting position of text selected in the text box.

Exceptions

Exception Type Condition
ArgumentException The value assigned to the property is less than zero.

Remarks

If no text is selected in the control, this property indicates the insertion point for new text. If you set this property to a location beyond the length of the text in the control, the selection start position will be placed after the last character. When text is selected in the text box control, changing this property might decrease the value of the SelectionLength property. If the remaining text in the control after the position indicated by the SelectionStart property is less than the value of the SelectionLength property, the value of the SelectionLength property is automatically decreased. The value of the SelectionStart property never causes an increase in the SelectionLength 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.

Example

[Visual Basic, C#, C++] The following example uses TextBox, a derived class. It provides Click event handlers for MenuItem objects that perform Cut, Copy, Paste, and Undo operations. This example assumes that a TextBox control named textBox1 has been created.

[Visual Basic] 
Private Sub Menu_Copy(sender As System.Object, e As System.EventArgs)
    ' Ensure that text is selected in the text box.   
    If textBox1.SelectionLength > 0 Then
        ' Copy the selected text to the Clipboard.
        textBox1.Copy()
    End If
End Sub
 
Private Sub Menu_Cut(sender As System.Object, e As System.EventArgs)
    ' Ensure that text is currently selected in the text box.   
    If textBox1.SelectedText <> "" Then
        ' Cut the selected text in the control and paste it into the Clipboard.
        textBox1.Cut()
    End If
End Sub
 
Private Sub Menu_Paste(sender As System.Object, e As System.EventArgs)
    ' Determine if there is any text in the Clipboard to paste into the text box.
    If Clipboard.GetDataObject().GetDataPresent(DataFormats.Text) = True Then
        ' Determine if any text is selected in the text box.
        If textBox1.SelectionLength > 0 Then
            ' 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 Then
                ' Move selection to the point after the current selection and paste.
                textBox1.SelectionStart = textBox1.SelectionStart + _
                    textBox1.SelectionLength
            End If
        End If 
        ' Paste current text in Clipboard into text box.
        textBox1.Paste()
    End If
End Sub

Private Sub Menu_Undo(sender As System.Object, e As System.EventArgs)
    ' Determine if last operation can be undone in text box.   
    If textBox1.CanUndo = True Then
        ' Undo the last operation.
        textBox1.Undo()
        ' Clear the undo buffer to prevent last action from being redone.
        textBox1.ClearUndo()
    End If
End Sub


[C#] 
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();
 }
 
 private void Menu_Cut(System.Object sender, System.EventArgs e)
 {   
     // Ensure that text is currently selected in the text box.   
     if(textBox1.SelectedText != "")
        // Cut the selected text in the control and paste it into the Clipboard.
        textBox1.Cut();
 }
 
 private 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();
    }
 }
 
 
 private 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();
    }
 }
 

[C++] 
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(S""))
        // 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(S"Do you want to paste over current selection?", S"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();
    }
 }
 

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework

See Also

TextBoxBase Class | TextBoxBase Members | System.Windows.Forms Namespace

Show: