【发布时间】:2018-10-30 14:42:12
【问题描述】:
在选中多个复选框时,如何在不使用大量 if / else if 条件的情况下正确更改文本的字体样式?
PS。我知道在一个文本中有多种样式时应该使用什么,但我不希望使用很长的 if/else 条件来实现它。
这就是我所拥有的:
public void updateFont()
{
//Individual
if (checkBox_Bold.Checked)
fontStyle = fontFamily.Style | FontStyle.Bold;
if (checkBox_Italic.Checked)
fontStyle = fontFamily.Style | FontStyle.Italic;
if (checkBox_Underlined.Checked)
fontStyle = fontFamily.Style | FontStyle.Underline;
if (checkBox_StrikeOut.Checked)
fontStyle = fontFamily.Style | FontStyle.Strikeout;
if (!checkBox_Bold.Checked && !checkBox_Italic.Checked && !checkBox_Underlined.Checked && !checkBox_StrikeOut.Checked)
fontStyle = FontStyle.Regular;
fontFamily = new Font(cbox_FontFamily.SelectedItem.ToString(), Convert.ToInt32(fontSize), fontStyle);
pictureBox_Canvass.Invalidate();
}
【问题讨论】:
-
有一个
Update()方法,您只需从每个复选框的相关事件中调用它吗? -
如果你有很多 if/else,switch/cases 可能会更好。特别是模式匹配可能是一个有价值的补充。
-
如果您正在使用 Windows 窗体或其他内容,请添加
-
4 个条件几乎没有“很多”
-
@untethered 您需要通过editing 您的问题并添加相关标签来回答这是 WinForms、WPF、Asp.net 还是其他任何问题。它可能会通过显示您拥有的代码的相关位来帮助上述评论者。
标签: c# winforms checkbox font-style