dポイントプレゼントキャンペーン実施中!

プログラムの勉強を始めたばかりのものです。
Visual Studio Community 2017 を使用して C# で Windows Form Application を勉強中です。
かなり初心者です。

ツール実行時にリッチテキストボックス内でユーザーが選択した文字列の装飾を
キーボードショートカットで可能なように試し中です。
具体的には下記2点を実装しました。
・Ctrl + B で太字のトグル
・Ctrl + U で下線のトグル
装飾の条件が複数あるため、下記のようなとても冗長になってしまいました‥。

// リッチテキストボックスのキー押下イベント
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
  // Ctrl + B で太字トグル
  if (e.Control && e.KeyCode == Keys.B)
  {
    if (richTextBox1.SelectionFont.Bold)
    {
      if (richTextBox1.SelectionFont.Underline)
      {
        // 結果:下線のみ
        richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, FontStyle.Underline);
      }
      else
      {
        // 結果:標準
        richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, FontStyle.Regular);
      }
    }
    else
    {
      if (richTextBox1.SelectionFont.Underline)
      {
        // 結果:太字 + 下線
        richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, FontStyle.Bold | FontStyle.Underline);
      }
      else
      {
        // 結果:太字のみ
        richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, FontStyle.Bold);
      }
    }
  }

  // Ctrl + U で下線トグル
  if (e.Control && e.KeyCode == Keys.U)
  {
    if (richTextBox1.SelectionFont.Underline)
    {
      if (richTextBox1.SelectionFont.Bold)
      {
        // 結果:太字のみ
        richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, FontStyle.Bold);
      }
      else
      {
        // 結果:標準
        richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, FontStyle.Regular);
      }
    }
    else
    {
      if (richTextBox1.SelectionFont.Bold)
      {
        // 結果:太字 + 下線
        richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, FontStyle.Bold | FontStyle.Underline);
      }
      else
      {
        // 結果:下線のみ
        richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, FontStyle.Underline);
      }
    }
  }
}

今回は太字と下線だけなのでまだこの長さで済みましたが、さらに斜線も加えたいとなると‥。
もっとシンプルでスマートな表記があれば教えて頂けないでしょうか?
自分でググってみた感じでは見つけられませんでした。

よろしくお願いします。m(_ _)m

A 回答 (1件)

Font を new するときに使っている FontStyle を変数で覚えておいて, トグルするときに ^ で xor するのは

ダメ?
    • good
    • 0
この回答へのお礼

Tacosanさん
ご回答ありがとうございます!

なるほど、演算子の組み合わせでいけるのですね。
https://docs.microsoft.com/ja-jp/dotnet/csharp/l …
https://www.ipentec.com/document/document.aspx?p …

お恥ずかしいことにこちらはまだ勉強していなかったので、早速調べつつ^で試してみます!

お礼日時:2017/11/04 18:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!