• 締切済み

リッチテキストの SelectionFont プロパティ(VB.NET)

リッチテキストで選択された範囲を太字や斜体等に変換させたく RichTextBox1.SelectionFont = _ New Font(RichTextBox1.SelectionFont, RichTextBox1.SelectionFont.Style Or FontStyle.Bold) このようにした場合、選択文字に複数のフォント?が含まれてると System.NullReferenceException はハンドルされませんでした。 オブジェクト参照がオブジェクト インスタンスに設定されていません。 となってしまいます。 SelectionFont プロパティが Nothing を返してくるようで… 仕方なく以下のようにして1文字づつ変換しているのですが With RichTextBox1 For i As Integer = .SelectionStart To .SelectionStart + .SelectionLength - 1 .SelectionStart = i .SelectionLength = 1 .SelectionFont = New Font(.SelectionFont, .SelectionFont.Style Or FontStyle.Bold) Next End With 他にうまく変換させる方法はないでしょうか?

  • ren10
  • お礼率18% (3/16)

みんなの回答

noname#185804
noname#185804
回答No.3

そうですねFontFamilyを指定しないといけないみたいなので それが省略(New Font(FontStyle.Bold)のように)出来ないのなら 1文字ずつ変換するか、複数のフォントを指定した時に フォント別に選択した文字位置を記憶しておいて フォントを変更する時にその文字位置データを使って変更するしか ないかな(分かり難い表現ですみません)。

noname#185804
noname#185804
回答No.2
ren10
質問者

補足

ありがとうございます。 参考 URL 以前に見た記憶が・・・ こちらの使用例を見ますと If Not richTextBox1.SelectionFont Is Nothing Then としっかり書いてあり、Nothing が返ってきた場合は処理しないようにしてあります。 SelectionFont が Nothing を返してくる以上、無理なんでしょうかね…

noname#185804
noname#185804
回答No.1

すみませんがMicrosoftのMSDNサイトで調べただけで 試していませんが下記コードを試してみて下さい RichTextBox1.SelectionFont = New Font( _  CurrentFont.FontFamily, _  CurrentFont.Size, FontStyle.Bold) 参考URL http://msdn.microsoft.com/library/ja/?url=/library/ja/cpref/html/frlrfSystemWindowsFormsRichTextBoxClassTextTopic.asp 選択テキストに複数のフォントが指定されていると Null参照になるのでCurrentFontを指定するのかな。

関連するQ&A

  • C#でFontStyleの列挙体に値を追加したい

    通常、フォントに太字やイタリック体を指定する場合、 new Font("Arial", 10, FontStyle.Bold|FontStyle.Italic) のように「|」で区切った形で指定すると有りますが、 FontStyleの部分を変数を使って指定したいと考えています。 FontStyle styles = new FontStyle(); styles.Add(FontStyle.Bold); // 実際にはできません styles.Add(FontStyle.Italic); new Font("Arial", 10, styles); スタイルの情報は配列「bold, italic, underline, strikeout」のように保存されていて、 配列にboldが含まれていれば「FontStyle.Bold」を加えるといった流れが目的です。 Listを変換できないものかと試したりもしてみましたが例外が発生してしまいます。 List<Enum> styleList = new List<Enum>(); styleList.Add(FontStyle.Bold); styleList.Add(FontStyle.Italic); FontStyle styles = (FontStyle)Enum.ToObject(typeof(FontStyle), styleList); Font font = new Font("Arial", 12, styles); どのように解決すればいいのでしょうか? よろしくお願いします。

  • BoldやItalicのフォントを指定しても

    Wordで文字のスタイルを登録するにあたって、標準はMS明朝+Times New Romanなどでいいのですが、タイトルや強調文字に使用するスタイルを作るべくHG明朝+Times New Roman Boldというセットを作りたくとも、Boldフォントはリストにはなく、無理やり書いても、認識されないときが多いです。 太字やら斜体などのリストから太字を選択すると、日本語フォントのHG明朝まで太字になってしまいますが、これは目的にかないません。 もちろん、太字なしでHG明朝+Times New Romanで設定して、1語1語英単語や数字の上でCtrl+Bを押していくのも論外です。 太字体でなくても、見合った太さの明朝系があればそれでもいいですが、なんとなく逃げですし・・・。

  • コードを、改行しても働くようにしたい

    VB.Netを使用しています。 このようなコードがあります。(改行無し) If rtbReport.Font.Bold = False Then rtbReport.Font = New Font(rtbReport.Font.Name, rtbReport.Font.Size, FontStyle.Bold) End If ↑コレをプリントすると、コードの途中で左斜め下の矢印がつき、そこで改行されてプリントアウトします。 これだと授業で減点対象になるので、コードを途中で改行して、それでも働くようにしたいのです。 ご存知の方、よろしくお願いします。

  • フォントについて質問です。

    フォントについて質問です。 Arial Blackというフォントが好きで、よく使用しています。 最近、エクセルで使用しようとしたら、なぜか斜体になります。 「Bold」や「Italic」のオプションで選択してるわけではなく、 フォント指定で「Arial Black」を選ぶと斜体になっています。 というか、斜体でしか出てきません。 コントロールパネルのフォントを見てみたところ、 OpenTypeのArial Blackのファイルと、 TrueTypeのArial Black Italicの2種類ファイルがあることに気付きました。 「Arial Black Italic」というのがあるからいけないのか?と思い削除してみると、 フォントが表示されなくなります。 (OpenTypeのArial Blackのファイルは残してあるのに、です) いったいどういうことなのかさっぱりわかりません。。 どなたか詳しい方、お助けください(><)

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

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

  • VB.netで印刷

    プリンターにA4サイズより5mm内側に四角形を書いて印刷したいのですが ずれてしまいます。おそらく余白の設定ではないかとおもうのですが 用紙を横向き、余白0,指定はどう指定すればよいでしょうか あるいは、参考になるサイトをお教えください。 Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage Dim f As New Font("MS 明朝", 64, FontStyle.Bold) e.Graphics.PageUnit = GraphicsUnit.Millimeter e.Graphics.DrawRectangle(New Pen(Color.Red), 5, 5, 287, 200) End Sub

  • C# 配列?

    C#2005で以下のコードを実行すると 'System.NullReferenceException' のハンドルされていない例外が テスト.exe で発生しました。 追加情報: オブジェクト参照がオブジェクト インスタンスに設定されていません。 となります。配列は定義しているのですが 何がおかしいのでしょうか? Label[] lblTest = new Label[5]; private void Init() { for (int i = 0; i < 5; i++) { lblTest[i].Text = "1"; // ここで、エラー } }

  • VBAで作成したテキストボックスを

    VBAで作成したテキストボックスを ?背景色を透明に設定 ?線を無し(透明)に設定 したいと考えています。 他サイトにTextBox1.BackStyle = fmBackStyleTransparentの様な表記はあったのですが、 TextBox1の様な図形の名前を使わずに、Selection.みたいに使用したいと考えています。 当方、テキストボックスの選択も今一理解していません。 ご教授よろしくお願いいたします。 With Selection.Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Orientation = xlHorizontal .AutoSize = False .AddIndent = False End With

  • 小説の一説

    小説に、 "Getting that. Big and bold as a whole new day." とあったのですが、意味が今ひとつわかりません。 私は、 「なるほど。目新しいことは一度に来るんだな」 or 「わかっているよ。一度にびっくりすることが来るな」 なんて訳をつけてみました。どうですか? あと最初の「Getting that.」は = I get that. なのか、 「I get that big and bold as a whole new day.」 のどちらでしょうか?  お願いします。教えてください。

  • エクセルで特定の文字のフォントサイズ・色を変更したい。

    質問番号:1822805を参考にエクセルで特定の文字に色付けする作業をしています。 このときに、色を変えると同時にフォントサイズとフォントスタイルを 太字にしたいのですがエラーでうまくいきません。 どなたかご教授いただければと思います。 エラー内容は『オブジェクトはこのプロパティまたはメソッドをサポートしていません』です。 ちなみに下記のような構文を書いています。 『日本』と言う文字列に色をつける場合となっています。 Sub test() Dim rng As Range, r As Range, i As Long, colInd As Integer With ActiveSheet Set rng = .Range("a1:z100") '範囲の設定 txt = "日本" '文字の設定 colInd = 3 '色の設定 For Each r In rng If InStr(r, txt) > 0 Then _ r.Characters(InStr(r, txt), Len(txt)) _ .Font.ColorIndex = colInd .Font.Size = 12 .Font.Fontstyle = "太字" Next End With End Sub