我有以下代码,并且想知道是否有更简洁、精简的写法:
(FontStyle是一个带有Flags属性的.NET枚举)
(FontStyle是一个带有Flags属性的.NET枚举)
lblPrompt.Font.Style = FontStyle.Regular;
if (chkBold.Checked)
lblPrompt.Font.Style |= FontStyle.Bold;
if (chkItalics.Checked)
lblPrompt.Font.Style |= FontStyle.Italic;
if (chkUnderline.Checked)
lblPrompt.Font.Style |= FontStyle.Underline;
我觉得答案在于正确地应用CheckBox.Checked和所需标志之间的and &运算符,类似以下方式:
lblPrompt.Font.Style =
(chkBold.Checked & FontStyle.Bold)
| (chkItalics.Checked & FontStyle.Italic)
| (chkUnderline.Checked & FontStyle.Underline);
然而,这种方法行不通,因为编译器似乎不喜欢我直接将和符号应用于布尔值和标志/枚举类型。