
プログラムの勉強を始めたばかりのものです。
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ランキング
-
Firefoxでテーブルの外側の背景...
-
リンクの文字と下線の間にスペ...
-
空リンク"#"で指定すると、一気...
-
リンク下のアンダーラインの消し方
-
同ページ内のリンク下線が消えない
-
システムカラーをRGB値に
-
<pre>~</pre>について
-
リンク部分にカーソルが来たら...
-
一部分のみ文字色指定(リンク)
-
VBAでホームページに表示された...
-
3カラムのサイドバーの右側が表...
-
htmlの文字が縦書きになる
-
画像横のテキストをセンターに...
-
ブロック要素の幅を中身の幅に...
-
ページを開いているときのリン...
-
疑似クラス :activeが効きません
-
ホリエモンのブログは、なぜ両...
-
ロールオーバーで画像がずれな...
-
html/cssの、navを2段にする...
-
スタイルシート line-heightの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<pre>~</pre>について
-
HRタグ 枠線を透明にするには?
-
訪問済のリンク色を変えない方法
-
マウスオーバーでの反応速度が遅い
-
リンク部分にカーソルが来たら...
-
システムカラーをRGB値に
-
<form <input type="text"の枠...
-
カラープレーンってなんですか?
-
LinkButtonコントロール
-
smartyテンプレートの<style></...
-
点線や破線を引くには
-
外部スタイルシートでのスクロ...
-
リンクの下線の距離を変更した...
-
CSSでクラスのエイリアス(include)
-
アンカーへのリンク設定と文字色
-
HP リンク作成
-
CSSのtext-decoration: none;が...
-
Pandas の groupby後の要素の参...
-
JavaScriptで任意の文字の色を...
-
カーソルを乗せると、文字の色...
おすすめ情報