リッチテキストの SelectionFont プロパティ(V...

リッチテキストで選択された範囲を太字や斜体等に変換させたく

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

他にうまく変換させる方法はないでしょうか?

投稿日時 - 2006-06-29 08:41:27

QNo.2244839

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

回答(3件中 1~3件目)

ANo.3

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

投稿日時 - 2006-07-05 14:55:47

ANo.2

すみません参考URL間違えていました
http://msdn.microsoft.com/library/ja/cpref/html/frlrfSystemWindowsFormsRichTextBoxClassSelectionFontTopic.asp?frame=true

投稿日時 - 2006-07-04 10:28:21

補足

ありがとうございます。
参考 URL 以前に見た記憶が・・・
こちらの使用例を見ますと

If Not richTextBox1.SelectionFont Is Nothing Then

としっかり書いてあり、Nothing が返ってきた場合は処理しないようにしてあります。
SelectionFont が Nothing を返してくる以上、無理なんでしょうかね…

投稿日時 - 2006-07-04 19:05:53

ANo.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を指定するのかな。

投稿日時 - 2006-07-04 10:26:47

あなたにおすすめの質問

MSN恋人探し

MSN恋愛・結婚

数字が教える恋愛常識

数字が教える恋愛常識

恋人には言えない秘密ってある?

[PR] お役立ち情報