C#リッチテキストボックスの文字色の変更方法

このQ&Aのポイント
  • C#のリッチテキストボックスで文字色を変更する際、選択された文字が解除されない問題が発生することがあります。これを解除するためには、以下の方法があります。
  • まず、リッチテキストボックスのSelectionColorプロパティを設定してから文字列を追加する方法があります。この場合、文字列の色は指定した色で統一されますが、選択状態は解除されます。
  • もう一つの方法は、文字列を追加した後に選択状態を解除する方法です。これには、Selectメソッドを使用して最後の文字を選択し、SelectionColorプロパティを設定することで選択状態を解除できます。
回答を見る
  • ベストアンサー

C# リッチテキストボックスの文字色

richTextBox_pro.Text = "aaaaaaaaaaaaaaaaaaaaaaaa"; richTextBox_pro.Text += "end"; richTextBox_pro.Select(richTextBox_pro.TextLength - 3, 3); richTextBox_pro.SelectionColor = Color.Black; のようにして、最後に付け加えた end の文字だけ色をかえているのですが、 選択された状態になってしまいます。 マウスでドラックしている状態です。 これを解除した状態で文字色をかえるにはどうしたらいいのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

選択範囲を解除しても 色は設定されたままだと思いますよ 選択を解除するだけなら richTextBox_pro.SelectionLength = 0; などを実行してやればいいと思います キャレットの位置の変更したければ richTextBox_pro.SelectionStart = 任意の位置; といった具合でしょう

trfnc223
質問者

お礼

ありがとうございます。 うまくいきました!!

関連するQ&A

  • VB2008、文字色について教えて下さい

    VB2008を使用しています。 現在、Form内複数あるTextBox内の文字をいくつか選択し、RichTextBox内に"・"で区切って代入するプログラムを作成しています。 その際、RichTextBox内に代入されたTextBoxの文字色を赤色に変える(元は黒色です)コードを下記のように作成しました。 Dim strList() As String strList = RichTextBox1.Text.Split("・"c) For Each strMoji As String In strList Select Case strMoji Case TextBox1.Text TextBox1.ForeColor = Color.Red Case TextBox2.Text TextBox2.ForeColor = Color.Red End Select Next 上記コードは問題ないのですが、RichTextBox内に一度代入された複数のTextBoxの文字から、いくつかを選択して削除した際、選択したTextBoxの文字を元の黒色に戻す方法がわかりません。単純に全てのTextBoxの文字色を黒色に戻すコードを書いてしまうと、同様の操作を他のRichTextBoxに適用した場合、そちらに代入された文字色も黒色に戻ってしまいます。上記のコードを応用すれば出来そうなのですが、良い方法はないでしょうか?上記コード3行目の「In」を「Out」や「Cut」に変更しても構文エラーになってしまいました。

  • リッチテキストボックス内のフォント変更

    VB.NETプログラミングしています。 基礎的なことだと思うのですが、 調べてもわかりませんのでご教示ください。 RichTextBoxを使ってテキストエディタを作っています。 このリッチテキストボックス内でキーダウンイベントを発生させ、 選択されている文字のフォント変更(例えばボールド体やイタリック体、下線付加)したいのですができません。 ワードのような機能を付加したいだけなのですが、うまくいきません。 つまり、 If e.Control = True Then  With RichTextBox1   Select Case e.KeyCode     Case Keys.B   (選択されている文字をボールド体にして、    ボールド体の部分は非ボールド体にする) End Select End With EndIf の中の 「選択されている文字をボールド体にして、ボールド体の部分は非ボールド体にする」という処理ができません。 ご存知の方、ご教示ください。

  • C# RichTextBox マウスによる選択範囲

    Visual C# 2010 を使っています。 RichTextBoxのテキストをマウスドラッグで選択するとき、自動で選択範囲が広がる場合があります。 それを無くしてマウスで指している場所丁度までにしたいのですが、どうすれば出来るか教えてください。

  • VB2010でRichTextBoxでの一文字ずつ選択するにはどうすれ

    VB2010でRichTextBoxでの一文字ずつ選択するにはどうすればいいのでしょうか・・・? マウスでドラッグして選択範囲を作りその部分だけフォントで色変更を行いたいのですが、それ以前に一文字ずつドラッグできず一気にすべてが選択範囲となってしまいます。 例えば「あいうえお」というのがあってドラッグして「あ」だけを選択しようとすると5文字全てが選択されてしまうということです。 TextBoxでは一文字ずつ選択できるのですがRichの方でないと選択部分のみの色変更は出来ないとのことらしいので・・・。 どなたか解決策をお教えください。

  • VB6のWebBrowserコントロールのテキストボックスについて

    VB6でWebBrowserコントロールを使用してテキストボックスを表示しており。テキストボックス内の入力文字列がSelect(反転表示され選択されている状態)されている場合に、Select状態を解除する方法を知りたいのですが、よろしくお願いいたします。

  • セレクトボックスのハイライトの色を変更

    セレクトボックスのハイライトの色を変更できますか。 「セレクトボックスのハイライト」とは、セレクトボックスのある値を選択したときに、テキストを選択したときと同じように紺色の色でハイライトされる状態のこと。文字変換の時の状態の反転も同様。 ハイライトというよりも反転と言ったほうが適切かもしれません。 ※ STYLE="Background-Color : yellow" のことではなく。

    • ベストアンサー
    • CSS
  • (vb.net)リッチテキストボックスへのドラッグアンドドロップによるファイルの貼り付け

    こん@@は、どうしても出来なくて困ってます。 vb.netにおいて、リッチテキストボックスへのドラッグアンドドロップで、ファイルそのものを貼り付けたいのですが、どうしても出来ません。 ワードパッドや、outlookの文字入力部分にファイルをドラッグしたらアイコン状態でファイルが張り付きますよね? このような動作をvb.netのRichTextBoxにて実装したいのです。(ダブルクリックしたらそのファイルを開けれる状態で貼り付けたい) vb6.0だとRichTextBoxを作成するだけでその辺のことは最初から出来るのですが、vb.netだとうまく行きません。 現状AllowDropとかはTrueにもちろんしています。 MSDN Library 等調べてもtextやビットマップを貼り付けると言うような情報しか得られませんでした。 どなたか、わかる方がいらっしゃいましたら教えてください。 お願いします。

  • テキストボックスの反転

    Text1.SelStart = 0 Text1.SelLength = Len("text1") Text1.SetFocus これだとテキストボックスでマウスを左から右へドラッグさせて 反転させたのと同じ状態にできますが 右から左へドラッグさせたのと同じ状況を作り出したいのです up ←move Down T e x t 1 といった感じに。 反転して挿入するとき視覚的に左から文字を表示されるようにしたいのですが どうすればよいでしょうか?

  • VB 2005 リッチテキストボックス 文字選択

    Visual Basic 2005 Express Editionを使っています。 趣味程度以下のレベルです。よろしくお願い致します。 質問の内容は、リッチテキストボックスの内容を選択(反転表示)して クリップボードに記憶させるコードを知りたいのです。 今、作っているのは、 Formの真ん中に、大き目のリッチテキストボックスを配置して 下にボタンを3つ配置しています。 ボタン1は (1)テキストボックスに"c:\mail\aaa.txt"を表示する。 (2)Cドライブのmailフォルダからaaa.txtをリッチテキストボックスに表示。 TextBox1.Text = "c:\mail\aaa.txt" RichTextBox1. LoadFile(TextBox1.Text, RichTextBoxStreamType.PlainText) と言うふうにしています。 同様に、ボタン2は bbb.txtをリッチテキストボックスに表示、 ボタン3はccc.txtをリッチテキストボックスに表示するようにしています。 使用方法としては、取引先とメールのやり取りを行う際に、 メールのパターンが3種類あって、これまでは、aaa.txtをメモ帳で 開いてはコピペしてメーラーに貼り付け。bbb.txtをメモ帳で開いては メーラーに貼り付け。を繰り返していました。 クリップボードに記憶させるのは、 Clipboard.SetDataObject(RichTextBox1.SelectedText) で、うまく行きましたが、クリップボードに記憶させる文字の選択は 手動でやっています。 また、文字の選択というのは、リッチテキストボックスに表示された、 文字を抜き出して選択するわけではなくて、表示されている全てを 選択(反転文字)にしたいのです。 わかりにくい説明で申し訳ありませんが、よろしくお願い致します。

  • テキストボックスの文字を一括して削除するには

    エクセルで沢山のテキストボックスの文字を一括して削除するマクロとして以下を実行するとエラーになってしまいます。 (テキストボックス自体は残す) Sub sakujo() ActiveSheet.TextBoxes.Select Selection.Characters.Text = "" End Sub どこがおかしいのでしょう?

専門家に質問してみよう