複数のフォントスタイルをテキストにどのように適用しますか?
System.Drawing.Font MyFont = new System.Drawing.Font(
thisTempLabel.LabelFont,
((float)thisTempLabel.fontSize),
FontStyle.Bold + FontStyle.Italic, // + obviously doesn't work, but what am I meant to do?
GraphicsUnit.Pixel
);
助けてくれてありがとう!
System.Drawing.Font MyFont = new System.Drawing.Font(
thisTempLabel.LabelFont,
((float)thisTempLabel.fontSize),
FontStyle.Bold | FontStyle.Italic, // + obviously doesn't work, but what am I meant to do?
GraphicsUnit.Pixel
);
OR演算子(|
)
FontStyle
はフラグ列挙であるため、次の方法で複数のスタイルを設定できます。
FontStyle.Bold | FontStyle.Italic
FontStyle.Boldだと思います| FontStyle.Italic
通常、これらの関数で複数のフラグを結合するには、パイプ(ビットごとのOR)シンボルを使用します。
このページで説明します
こんにちは、私は簡単なテキストエディタを書いていましたが、同じ問題を抱えていました。インターネット上で役に立つものは見つかりませんでした。フォームに多くのボタンがある場合、if、else ifメソッドは最適ではありません。上記の人のようなシンボル。このコードをテストしたところ、動作します。クリックしたpictureBoxからこのメソッドを呼び出します。
更新。バグを見つけました。フォントの選択を解除すると、他のすべてのフォントも通常にリセットされます。しかし、それらを組み合わせたコードは機能します。
private void ChangeFontStyle(PictureBox p)
{
if (p == pictureBox1)
{
if (BClicked)
{
richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Bold);
}
else
{
richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Regular);
}
}
else if (p == pictureBox2)
{
if (IClicked)
{
richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Italic);
}
else
{
richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Regular);
}
}
else if (p == pictureBox3)
{
if (UClicked)
{
richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.SelectionFont.Style | FontStyle.Underline);
}
else
{
richTextBox1.SelectionFont = new Font(richTextBox1.Font, richTextBox1.Font.Style | FontStyle.Regular);
}
}
}
追伸:ボタンの代わりにピクチャボックスを使用し、BClickedなどのブール変数はそれらがアクティブかどうかを示します。
Fontクラスの恩恵を受けることができると思います:
/*controlName*/.SelectionFont=new Font(maintext.Font, FontStyle.Italic);