RichTextBox

[Tips][RichTextBox] フォーカスを失っても選択範囲のハイライトを維持する

0

[ad code=2 align=left]
通常文字列が選択されると、選択箇所がわかるようハイライトされます。

しかし別のコントロールにフォーカスが移ってしまうとハイライト表示は消えてしまうため、どの文字列が選択されているかはRichTextBoxにフォーカスを移すまで確認することができません。

そこで、フォーカスを失っても選択範囲のハイライトを維持するにはHideSelectionプロパティにFalseを設定します(既定値はTrue)。

 

下記は、フォーカスを失っても選択範囲のハイライトを維持する例です。

下図をよく見ていただきたいのですが、フォーカスはRichtextBoxの下に配置したTextBox(カーソルがあるのがわかるでしょうか)にありますが、RichTextBox上では「RichTextBox」が選択されています。

 

VBの例

' フォームロード時の処理
Private Sub Form15_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    '★★★フォーカスを失っても選択範囲のハイライトを維持する★★★
    RichTextBox1.HideSelection = False
End Sub

 

C#の例

// フォームロード時の処理
private void Form15_Load(object sender, EventArgs e)
{
    // ★★★フォーカスを失っても選択範囲のハイライトを維持する★★★
    richTextBox1.HideSelection = false;
}

[Tips][RichTextBox] 指定した位置の文字列を選択する

0

RichTextBox内で、指定した位置の文字列を選択状態にするにはSelectメソッドを使用します。

第1引数には文字列の選択開始位置を、第2引数は何文字選択するかを指定します。

 

下記は、指定した位置の文字列を選択する例です。

テキストボックスに入力された文字列を検索し、見つかった場合は文字列を選択します。

 

 

VBの例

' [検索]ボタンクリック時の処理
Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click
    Dim intFoundPos As Integer

    'テキストボックスに入力された文字列を検索
    intFoundPos = RichTextBox1.Find(txtSearch.Text)

    '文字列が見つかった位置が-1より大きいか?
    If intFoundPos > -1 Then
        '★★★検索で見つけた文字列を選択★★★
        RichTextBox1.Select(intFoundPos, txtSearch.TextLength)

        'フォーカスを当てる(フォーカスがはずれると選択されている場所がハイライトされないため)
        RichTextBox1.Focus()
    End If
End Sub

C#の例

// [検索]ボタンクリック時の処理
private void btnSearch_Click(object sender, EventArgs e)
{
    int intFoundPos;

    // ★★★テキストボックスに入力された文字列を検索★★★
    intFoundPos = richTextBox1.Find(txtSearch.Text);

    // 文字列が見つかった位置が-1より大きいか?
    if (intFoundPos > -1)
    {
        // ★★★検索で見つけた文字列を選択★★★
        richTextBox1.Select(intFoundPos, txtSearch.TextLength);

        // フォーカスを当てる(フォーカスがはずれると選択されている場所がハイライトされないため)
        richTextBox1.Focus();
    }
}

[Tips][RichTextBox] 文字列を検索する

0

RichTextBoxコントロール内の文字列を検索するにはFindメソッドを使用します。

Findメソッドの引数には検索したい文字列を指定します。戻り値は文字列が見つかった位置を示し、-1が返された場合は文字列が見つからなかったことを意味します。

 

下記は、文字列を検索する例です。

テキストボックスに入力された文字列を検索し、見つかったかどうかを表すメッセージを表示します。

 

 

VBの例

' [検索]ボタンクリック時の処理
Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click
    Dim intFoundPos As Integer

    '★★★テキストボックスに入力された文字列を検索★★★
    intFoundPos = RichTextBox1.Find(txtSearch.Text)

    '文字列が見つかった位置が-1より大きいか?
    If intFoundPos > -1 Then
        MessageBox.Show("文字列が見つかりました")
    Else
        MessageBox.Show("文字列は見つかりませんでした")
    End If
End Sub

C#の例

// [検索]ボタンクリック時の処理
private void btnSearch_Click(object sender, EventArgs e)
{
    int intFoundPos;

    // ★★★テキストボックスに入力された文字列を検索★★★
    intFoundPos = richTextBox1.Find(txtSearch.Text);

    // 文字列が見つかった位置が-1より大きいか?
    if ( intFoundPos > -1 )
        MessageBox.Show("文字列が見つかりました");
    else
        MessageBox.Show("文字列は見つかりませんでした");
}

[Tips][RichTextBox] 読み取り専用にする

1

RichTextBoxコントロールを読み取り専用にするにはReadOnlyプロパティにTrueを設定します。

 

下記は、読み取り専用にする例です。

[読み取り専用]チェックボックスのチェックがオンになると、RichTextBoxコントロールは読み取り専用になります。

読み取り専用の時はテキストの編集は行えませんが、選択やコピーといった操作が可能です。

 

 

VBの例

' [読み取り専用]チェック変更時の処理
Private Sub chkReadOnly_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkReadOnly.CheckedChanged
    '★★★RichTextBoxの読み取り専用の状態を変更する★★★
    RichTextBox1.ReadOnly = chkReadOnly.Checked
End Sub

C#の例

// [読み取り専用]チェック変更時の処理
private void chkReadOnly_CheckedChanged(object sender, EventArgs e)
{
    // ★★★RichTextBoxの読み取り専用の状態を変更する★★★
    richTextBox1.ReadOnly = chkReadOnly.Checked;
}

[Tips][RichTextBox] 選択されているテキストのフォントを変更する

0

RichTextBoxコントロールで選択されているテキストのフォントを変更するにはSelectionFont プロパティを使用します。

下記は、選択されているテキストのフォントを変更する例です。

[選択されているテキストのフォントを変更]ボタンがクリックされた場合は、フォントダイアログで選択されたフォントを、RichTextBoxで選択されたテキストのフォントに適用します。

また、[メイリオ, 20pt, 太字]ボタンがクリックされた場合は、Fontクラスで「メイリオ,20pt,太字」のフォントを作成して適用します。

VBの例

' [選択されているテキストのフォントを変更]ボタンクリック時の処理
Private Sub btnFontSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFontSelect.Click
    'FontDialogを表示
    If FontDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
        '★★★選択されているテキストのフォントを変更★★★
        RichTextBox1.SelectionFont = FontDialog1.Font
    End If
End Sub

' [メイリオ, 20pt, 太字]ボタンクリック時の処理
Private Sub btnApplyFont_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApplyFont.Click
    '★★★選択されているテキストのフォントをメイリオ,20pt,太字に設定★★★
    RichTextBox1.SelectionFont = New Font("メイリオ", 20, FontStyle.Bold)
End Sub

C#の例

// [選択されているテキストのフォントを変更]ボタンクリック時の処理
private void btnFontSelect_Click(object sender, EventArgs e)
{
    // FontDialogを表示
    if ( fontDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK )
    {
        // ★★★RichTextBoxで選択されているテキストのフォントを変更★★★
        richTextBox1.SelectionFont = fontDialog1.Font;
    }
}

// [メイリオ, 20pt, 太字]ボタンクリック時の処理
private void btnApplyFont_Click(object sender, EventArgs e)
{
    // ★★★選択されているテキストのフォントをメイリオ,20pt,太字に設定★★★
    richTextBox1.SelectionFont = new Font("メイリオ", 20, FontStyle.Bold);
}
Go to Top