DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

TextBox(またはRichTextBox)で選択されている文字列の取得と設定

テキストボックスで選択されている文字列の取得

テキストボックス(またはリッチテキストボックス)で選択されている文字列は、テキストボックスコントロールのSelectedTextプロパティで取得できます。また、テキストボックスで選択されている開始位置はSelectionStartプロパティで、長さはSelectionLengthプロパティで取得ができます。文字列が選択されていない時、SelectionStartプロパティはカレット(カーソル)の位置(挿入位置)を示します。

例えば、TextBoxの内容が「ABCDEFG」で、「CDE」が選択されている時は、SelectedTextが「CDE」、SelectionStartが「2」、SelectionLengthが「3」となります

VB.NET
コードを隠すコードを選択
'TextBox1で選択されている文字列を表示
Console.WriteLine(TextBox1.SelectedText)

'TextBox1で選択されている開始位置を表示
'TextBox1.SelectionLengthが0の時は、カレットの位置
Console.WriteLine(TextBox1.SelectionStart)

'TextBox1で選択されている文字列の長さを表示
Console.WriteLine(TextBox1.SelectionLength)
C#
コードを隠すコードを選択
//TextBox1で選択されている文字列を表示
Console.WriteLine(TextBox1.SelectedText);

//TextBox1で選択されている開始位置を表示
//TextBox1.SelectionLengthが0の時は、カレットの位置
Console.WriteLine(TextBox1.SelectionStart);

//TextBox1で選択されている文字列の長さを表示
Console.WriteLine(TextBox1.SelectionLength);

テキストボックスで指定した文字列を選択状態にする

テキストボックスで指定した文字列を選択状態にするには、テキストボックスコントロールのSelectionStartプロパティとSelectionLengthプロパティを使います。SelectionStartに選択の開始位置を指定し、SelectionLengthにその長さを指定します。SelectionLengthを0にしてSelectionStartを指定すると、カーソル(カレット)の位置(挿入位置)を変更できます。

例えば、TextBoxの内容が「ABCDEFG」で、「CDE」を選択状態にしたいときは、SelectionStartを「2」にして、SelectionLengthを「3」にします。

また、同様のことはSelectメソッドでも行えます。TextBoxの内容が「ABCDEFG」で、「CDE」を選択状態にしたいときは、「TextBox1.Select(2, 3)」のようにします。

次の例ではテキストボックスTextBox1内で"123"という文字列を探し、見つかれば選択状態にしています。

VB.NET
コードを隠すコードを選択
'"123"という文字列を探して選択状態にする
Dim s As String = "123"
'探す文字列が見つかる位置を取得する
Dim i As Integer = TextBox1.Text.IndexOf(s)
If i > -1 Then
    '見つかった位置を選択開始の位置にする
    TextBox1.SelectionStart = i
    '探した文字列の長さを選択する文字列の長さにする
    TextBox1.SelectionLength = s.Length
    '同じことをSelectメソッドを使って行うと次のようになる
    'TextBox1.Select(i, s.Length)
End If
C#
コードを隠すコードを選択
//"123"という文字列を探して選択状態にする
string  s= "123";
//探す文字列が見つかる位置を取得する
int  i= TextBox1.Text.IndexOf(s);
if (i > -1)
{
    //見つかった位置を選択開始の位置にする
    TextBox1.SelectionStart = i;
    //探した文字列の長さを選択する文字列の長さにする
    TextBox1.SelectionLength = s.Length;
    //同じことをSelectメソッドを使って行うと次のようになる
    //TextBox1.Select(i, s.Length);
}

テキストボックス内のすべての文字列を選択するには、SelectAllメソッドを使うのがよいでしょう。

補足:TextBoxのHideSelectionプロパティがtrueの場合、上記のような方法でフォーカスのないTextBoxのテキストを選択状態にしても、選択されたようには見えません。これが都合が悪ければ、HideSelectionプロパティをfalseにするか、FocusメソッドでTextBoxにフォーカスを設定してからテキストを選択状態にしてください。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。