![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
プログラムの勉強を始めたばかりのものです。
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ランキング
-
<form <input type="text"の枠...
-
テキストエリア送信の際の文字...
-
カーソルを乗せると、文字の色...
-
<pre>~</pre>について
-
リンク後の色設定
-
htmlの文字が縦書きになる
-
【ヒトの神秘】美男美女から何...
-
widthやheightの数値に単位(px...
-
含む含まないという概念自体の...
-
【CSS】特定のリンクを含むaタ...
-
ページを開いているときのリン...
-
テーブルのセル間に余白が空い...
-
htmlのolやulなどlistにtitleや...
-
NからZへの全単射を具体的に構...
-
有限要素法
-
【マークアップ言語 複数画像中...
-
HTML5のfooterに見出しを付けて...
-
複数のボタンを等間隔に、かつ...
-
CSS(0の単位)について
-
投稿フォームの整列
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<form <input type="text"の枠...
-
訪問済のリンク色を変えない方法
-
HRタグ 枠線を透明にするには?
-
<pre>~</pre>について
-
CSSでクラスのエイリアス(include)
-
カラープレーンってなんですか?
-
ホームページビルダー 水平線に...
-
テキストボックスの文字の大き...
-
リンクのアンダーバーを消した...
-
リンク下のアンダーラインの消し方
-
横スクロールバーを表示したい
-
Pandas の groupby後の要素の参...
-
秀丸の正規表現を使って<FONT c...
-
\\0 sprintf( ) strcat( )
-
白い文字と黒い文字を出すため...
-
C# RichTextBoxで選択した文字...
-
リンクの下線を消す
-
はじめて利用します。質問の上...
-
リンク部分にカーソルが来たら...
-
テキストエリア送信の際の文字...
おすすめ情報