Udostępnij za pośrednictwem


Jak zaznaczyć tekst w kontrolce TextBox w formularzach Windows

Tekst można zaznaczyć programowo w kontrolce Windows Forms TextBox. Jeśli na przykład utworzysz funkcję, która wyszukuje tekst dla określonego ciągu, możesz wybrać tekst, aby wizualnie powiadomić czytelnika o pozycji znalezionego ciągu.

Aby programowo zaznaczyć tekst

  1. Ustaw właściwość SelectionStart na początek tekstu, który chcesz zaznaczyć.

    Właściwość SelectionStart jest liczbą wskazującą punkt wstawienia w tekście, przy czym 0 jest pozycją najbardziej na lewo. Jeśli właściwość SelectionStart jest ustawiona na wartość równą lub większą niż liczba znaków w polu tekstowym, punkt wstawiania jest umieszczany po ostatnim znaku.

  2. Ustaw właściwość SelectionLength na długość tekstu, który chcesz zaznaczyć.

    Właściwość SelectionLength jest wartością liczbową, która ustawia szerokość punktu wstawiania. Ustawienie SelectionLength na liczbę większą niż 0 powoduje wybranie tej liczby znaków, począwszy od bieżącego punktu wstawiania.

  3. (Opcjonalnie) Uzyskaj dostęp do zaznaczonego tekstu za pośrednictwem właściwości SelectedText.

    Poniższy kod wybiera zawartość pola tekstowego po wystąpieniu zdarzenia Enter kontrolki. W tym przykładzie sprawdza się, czy pole tekstowe ma wartość dla właściwości Text, która nie jest równa null ani pustemu ciągowi. Kiedy pole tekstowe otrzymuje fokus, zaznaczany jest aktualny tekst w tym polu. Program obsługi zdarzeń TextBox1_Enter musi być powiązany z kontrolką; Aby uzyskać więcej informacji, zobacz How to: Create Event Handlers at Run Time for Windows Forms.

    Aby przetestować ten przykład, naciśnij Tab, dopóki pole tekstowe nie uzyska fokusu. Po kliknięciu w polu tekstowym tekst jest niezaznaczony.

    Private Sub TextBox1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Enter
       If (Not String.IsNullOrEmpty(TextBox1.Text)) Then
          TextBox1.SelectionStart = 0
          TextBox1.SelectionLength = TextBox1.Text.Length
       End If
    End Sub
    
    private void textBox1_Enter(object sender, System.EventArgs e){
       if (!String.IsNullOrEmpty(textBox1.Text))
       {
          textBox1.SelectionStart = 0;
          textBox1.SelectionLength = textBox1.Text.Length;
       }
    }
    
    private:
       void textBox1_Enter(System::Object ^ sender,
          System::EventArgs ^ e) {
       if (!System::String::IsNullOrEmpty(textBox1->Text))
       {
          textBox1->SelectionStart = 0;
          textBox1->SelectionLength = textBox1->Text->Length;
       }
    }
    

Zobacz także