tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル同時書式設定
記事No6629
投稿日: 2007/12/07(Fri) 16:53
投稿者ゆうき
こんにちは、ゆうきです。

リッチテキストボックスで、リッチテキストエディタを作ろうと思っています。
そこで、ツールバーのボタンのオン・オフで、
選択部分の書式設定ができたらいいなと思っています。
押して太字等にする方法は、
http://hanatyan.sakura.ne.jp/dotnet/rich01.htm
でわかりましたが、オフにしたときに書式設定を解除する場合や、
同時に複数の書式を設定するときの方法がわからず困っています。

よろしくお願いします。

[ツリー表示へ]
タイトルRe: 同時書式設定
記事No6630
投稿日: 2007/12/07(Fri) 17:08
投稿者花ちゃん
> 押して太字等にする方法は、
> http://hanatyan.sakura.ne.jp/dotnet/rich01.htm
> でわかりましたが、オフにしたときに書式設定を解除する場合や、

標準の設定にすればいいのでは FontStyle.Regular
ご自分で試したり、ヘルプを調べるなりしないとすべて人に聞くことになるかと。

> 同時に複数の書式を設定するときの方法がわからず困っています。

FontStyle.Bold Or FontStyle.Italic

[ツリー表示へ]
タイトルRe^2: 同時書式設定
記事No6638
投稿日: 2007/12/08(Sat) 06:43
投稿者ゆうき
回答ありがとうございます。

> FontStyle.Bold Or FontStyle.Italic
でできることはわかったのですが、
テキストを選択したときに太字だったら太字ボタンをオンにする、
オンにしてから書式が設定されていないところを選択したときに、
どのボタンもオンにならない、などの処理がわかりません。

太字になっているところを下線にすると、太字が解除されてしまいます。
RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.Bold)
              ↓
RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.UnderLine)
              ↓
           下線のみになる

再々の質問ですがよろしくお願いします。

[ツリー表示へ]
タイトルRe^3: 同時書式設定
記事No6640
投稿日: 2007/12/08(Sat) 10:43
投稿者花ちゃん
> > FontStyle.Bold Or FontStyle.Italic
> でできることはわかったのですが、

(1+2)
理解できていたら下記の質問は出てこないはず。

> 太字になっているところを下線にすると、太字が解除されてしまいます。
> RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.Bold)
>               ↓
> RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.UnderLine)
>               ↓
>            下線のみになる

(1+4)

1+2 は解ったのですが、1+4 は解りませんと言う事ですか?

自分なりによく調べて、試さないから応用が少しも利かないのでは。

[ツリー表示へ]
タイトルRe^4: 同時書式設定
記事No6641
投稿日: 2007/12/08(Sat) 12:03
投稿者マリオ
  Dim fontstyle As FontStyle = Drawing.FontStyle.Regular
      
    '太字の設定
        If ToolStripButton1.CheckState = CheckState.Checked Then
            fontstyle = Drawing.FontStyle.Bold
        End If
    ’イタリック体
        If ToolStripButton2.CheckState = CheckState.Checked Then
            fontstyle = fontstyle Or Drawing.FontStyle.Italic
        End If
    ’下線
        If ToolStripButton3.CheckState = CheckState.Checked Then
            fontstyle = fontstyle Or Drawing.FontStyle.Underline
        End If
    ’取り消し線
        If ToolStripButton14.CheckState = CheckState.Checked Then
            fontstyle = fontstyle Or Drawing.FontStyle.Strikeout
        End If
   
   Me.RichTextBox1.SelectionFont = New Font
(Me.RichTextBox1.SelectionFont.FontFamily,
Me.RichTextBox1.SelectionFont.Size, fontstyle)

      こんな風にツールボタンのチェックステートの状態に応じて
  スタイルを組み合わせられる仕組みにしたらどうでしょう。

[ツリー表示へ]
タイトルRe^5: 同時書式設定
記事No6643
投稿日: 2007/12/08(Sat) 13:04
投稿者ゆうき
花ちゃんさん、マリオさん、
とても参考になりました。
自分なりに調べて、自分らしいソフトを作りたいと思います。

これからもご指導よろしくお願いします。

[ツリー表示へ]
タイトルRe^5: 同時書式設定
記事No6644
投稿日: 2007/12/09(Sun) 13:56
投稿者魔界の仮面弁士
> RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.Bold)

注意点を二つほど。

まずフォントによっては、「特定のスタイルしか受け付けないもの」もあるという点です。
例えば、"Brush Script MT" フォントは斜体専用フォントであるため、
 Dim style As FontStyle = Drawing.FontStyle.Regular
 Dim f As New Font("Brush Script MT", 12, style)
のようにすると、
 『フォント 'Brush Script MT' はスタイル 'Regular' をサポートしていません。』
という例外を発生させてしまいます。

任意のフォントを指定できるようにしている場合は、FontStyle を指定する前に、
本当にそのスタイルを指定できるかどうか調べるために、
 Dim ff As New FontFamily("Brush Script MT")
 If ff.IsStyleAvailable( style ) Then
のような事前チェックを加えておいた方が安全かもしれません。


もうひとつは、SelectionFont の利用について。
このプロパティは、選択範囲に複数のフォントが含まれていた場合、Nothing を
返します。これもまた例外を発生させる要因となりますので、事前チェックが必要です。

[ツリー表示へ]
タイトルRe^6: 同時書式設定
記事No6645
投稿日: 2007/12/09(Sun) 17:17
投稿者ゆうき
> 注意点を二つほど。

魔界の仮面弁士さん、注意点をご指摘いただきありがとうございます。
同時に書式を設定するにはいろいろなことに気をつけなければならないようですね。

これからもよろしくお願いします。

[ツリー表示へ]