![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
プログラムの勉強を始めたばかりのものです。
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
No.1ベストアンサー
- 回答日時:
Font を new するときに使っている FontStyle を変数で覚えておいて, トグルするときに ^ で xor するのは
ダメ?Tacosanさん
ご回答ありがとうございます!
なるほど、演算子の組み合わせでいけるのですね。
https://docs.microsoft.com/ja-jp/dotnet/csharp/l …
https://www.ipentec.com/document/document.aspx?p …
お恥ずかしいことにこちらはまだ勉強していなかったので、早速調べつつ^で試してみます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) ボールの動きがスムーズに動いてかつ目盛り線描画を維持するためには 4 2023/05/31 10:01
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- その他(プログラミング・Web制作) Pythonでのかんたんな物理シミュレーションについての書籍 5 2023/06/02 07:37
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- その他(プログラミング・Web制作) Pythonによる物理の斜方投射の位置座標表示について 2 2023/06/05 12:46
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
訪問済のリンク色を変えない方法
-
LinkButtonコントロール
-
<form <input type="text"の枠...
-
リンク下のアンダーラインの消し方
-
\\0 sprintf( ) strcat( )
-
点線や破線を引くには
-
html で文字の色が出てこない。
-
ホームページの移転情報を表示...
-
htmlの文字が縦書きになる
-
【ヒトの神秘】美男美女から何...
-
HTML属性での「""」 「''」違い
-
htmlのolやulなどlistにtitleや...
-
<table>の高さ固定。情報増加時...
-
角丸画像の背景色を透明にした...
-
2個のFormを横並びにしたい
-
個別にリンクの色を変える方法
-
画像イメージの上下左右、欲し...
-
liタグの中に<p>タグやら<dl>を...
-
ASP.NETでプレーンなページに文...
-
<ul><li></li></ul>にするメリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HRタグ 枠線を透明にするには?
-
訪問済のリンク色を変えない方法
-
<form <input type="text"の枠...
-
カラープレーンってなんですか?
-
<pre>~</pre>について
-
マウスオーバーでの反応速度が遅い
-
点線や破線を引くには
-
CSSでクラスのエイリアス(include)
-
リンクの文字と下線の間にスペ...
-
JavaScriptで任意の文字の色を...
-
リンクの下線の距離を変更した...
-
LinkButtonコントロール
-
スクロールバーが薄いです。
-
横スクロールバーを表示したい
-
テキストエリア送信の際の文字...
-
ホームページビルダー・表に透...
-
リンクの下線を消す
-
VB.NET(2008)を初めて1週間の...
-
秀丸の正規表現を使って<FONT c...
-
\\0 sprintf( ) strcat( )
おすすめ情報