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] 指定した位置の文字列を選択する
0RichTextBox内で、指定した位置の文字列を選択状態にするには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] 文字列を検索する
0RichTextBoxコントロール内の文字列を検索するには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] 読み取り専用にする
1RichTextBoxコントロールを読み取り専用にするには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] 選択されているテキストのフォントを変更する
0RichTextBoxコントロールで選択されているテキストのフォントを変更するには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); }