TextBoxBase.SelectionStart プロパティ

定義

テキスト ボックスで選択されているテキストの開始点を取得または設定します。Gets or sets the starting point of text selected in the text box.

public:
 property int SelectionStart { int get(); void set(int value); };
[System.ComponentModel.Browsable(false)]
public int SelectionStart { get; set; }
member this.SelectionStart : int with get, set
Public Property SelectionStart As Integer

プロパティ値

テキスト ボックスで選択されているテキストの開始点。The starting position of text selected in the text box.

属性

例外

割り当てられた値が 0 未満です。The assigned value is less than zero.

例 1Example 1

次のコード例でTextBoxは、派生クラスを使用します。The following code example uses TextBox, a derived class. 切り取り、 Clickコピー、貼りMenuItem付け、および元に戻す操作を実行するオブジェクトのイベントハンドラーを提供します。It provides Click event handlers for MenuItem objects that perform Cut, Copy, Paste, and Undo operations. この例では、 TextBoxというtextBox1名前のコントロールが作成されている必要があります。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();
      }
   }
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();
    }
 }
 
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

例 2Example 2

次の例ではSelectionStart ReadOnly 、最初にTextBox Focusを指定することによって、のプロパティを設定します。The following example sets the SelectionStart property of a TextBox that is ReadOnly by giving it the Focus first.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.button1.Click += new System.EventHandler(this.ButtonClickWork);
    }

    private void ButtonClickWork(object sender, EventArgs e)
    {
        this.textBox1.Text = "Hello world!";
        this.textBox1.ReadOnly = true;

        this.textBox1.Focus();
        this.textBox1.SelectionStart = this.textBox1.SelectionStart + 1;
        this.textBox1.SelectionLength = 1;
    }
}
Public Class Form1

    Private Sub ButtonClickWork(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles Button1.Click

        Me.TextBox1.Text = "Hello world!"
        Me.TextBox1.ReadOnly = True

        Me.TextBox1.Focus()
        Me.TextBox1.SelectionStart = Me.TextBox1.SelectionStart + 1
        Me.TextBox1.SelectionLength = 1
    End Sub
End Class

注釈

コントロールでテキストが選択されていない場合、このプロパティは、新しいテキストの挿入ポイント (キャレット) を示します。If no text is selected in the control, this property indicates the insertion point, or caret, 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. テキストボックスコントロールでテキストが選択されている場合、このプロパティを変更するとSelectionLength 、プロパティの値が減少する可能性があります。When text is selected in the text box control, changing this property might decrease the value of the SelectionLength property. プロパティによってSelectionStart示された位置の後にあるコントロール内の残りのテキストがSelectionLengthプロパティの値よりも小さい場合SelectionLength 、プロパティの値は自動的に縮小されます。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. SelectionStartプロパティの値によってプロパティがSelectionLength増加することはありません。The value of the SelectionStart property never causes an increase in the SelectionLength property.

プログラムを使用してテキストボックス内の選択項目を移動SelectionStartするにSelectionLengthは、プロパティとプロパティを設定します。You can programmatically move the selection within the text box by setting the SelectionStart and the SelectionLength properties.

カーソルを移動するテキストボックス内の位置にを設定しSelectionStartSelectionLengthプロパティをゼロ (0) に設定することによって、テキストボックス内のカレットをプログラムによって移動できます。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).

選択TextBoxまたはキャレットを移動するには、にフォーカスがある必要があります。The TextBox must have focus in order for the selection or the caret to be moved. SelectionStart最初のTextBox ReadOnlyに渡すことによって、のプロパティを設定できます。 FocusYou can set the SelectionStart property of a TextBox that is ReadOnly by giving it the Focus first.

適用対象