다음을 통해 공유


TextBoxBase.SelectionStart 속성

정의

텍스트 상자에서 선택한 텍스트의 시작 지점을 가져오거나 설정합니다.

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

속성 값

텍스트 상자에서 선택한 텍스트의 시작 지점입니다.

특성

예외

할당된 값이 0보다 작은 경우

예제

예제 1

다음 코드 예제에서는 파생 클래스인 를 사용합니다 TextBox. 잘라내기, 복사, 붙여넣기 및 실행 취소 작업을 수행하는 개체에 대한 MenuItem 이벤트 처리기를 제공합니다Click. 이 예제에서는 라는 textBox1 컨트롤을 TextBox 만들어야 합니다.

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

예제 2

다음 예에서는 첫 번째 속성을 제공하여 FocusTextBoxReadOnly 속성을 설정합니다SelectionStart.

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

설명

컨트롤에서 텍스트가 선택되지 않은 경우 이 속성은 새 텍스트의 삽입 지점 또는 caret를 나타냅니다. 이 속성을 컨트롤의 텍스트 길이를 초과하는 위치로 설정하면 선택 시작 위치가 마지막 문자 뒤에 배치됩니다. 텍스트 상자 컨트롤에서 텍스트를 선택하면 이 속성을 변경하면 속성 값이 SelectionLength 저하될 수 있습니다. 속성으로 표시된 SelectionStart 위치 다음에 있는 컨트롤의 나머지 텍스트가 속성 값 SelectionLength 보다 작으면 속성 값 SelectionLength 이 자동으로 감소됩니다. 속성 값으로 SelectionStart 인해 속성이 증가 SelectionLength 하지 않습니다.

SelectionLength 속성을 설정 SelectionStart 하여 텍스트 상자 내에서 선택 영역을 프로그래밍 방식으로 이동할 수 있습니다.

캐럿을 이동하려는 텍스트 상자 내의 위치로 를 설정하고 SelectionStart 속성을 0 값으로 설정 SelectionLength 하여 텍스트 상자 내에서 캐럿을 프로그래밍 방식으로 이동할 수 있습니다.

TextBox 선택 영역 또는 캐리트를 이동하려면 에 포커스가 있어야 합니다. 첫 번째 속성을 SelectionStart 제공하여 FocusTextBoxReadOnly 속성을 설정할 수 있습니다.

적용 대상