我正在重新编码(我几乎没有经验教训)。我正在尝试创建一个hello world程序,您可以在其中更改字体的所有方面,目前我一直在改变类中的字体样式。
我想在课堂上这样做的原因是因为我不想在Bold,Italics和Underline的每个复选框后面重复相同的代码。到目前为止,我已经设法得到一个基本的概念,但我觉得它漫长而冗长,可以缩短或至少制成某种形式的类,以便在需要时调用。这就是我到目前为止所做的:
private void chkItalics_CheckedChanged(object sender, EventArgs e)
{
if (chkItalics.Checked == true)
{
Italics = true;
}
else
{
Italics = false;
}
if ((Italics == true) && (Bold == false) && (Underline == false))
{
lblHello.Font = new System.Drawing.Font(FontType, FontSize, FontStyle.Italic);
}
else if ((Italics == true) && (Bold == true) && (Underline == false))
{
lblHello.Font = new System.Drawing.Font(FontType, FontSize, FontStyle.Italic | FontStyle.Bold);
}
else if ((Italics == true) && (Bold == true) && (Underline == true))
{
lblHello.Font = new System.Drawing.Font(FontType, FontSize, FontStyle.Italic | FontStyle.Bold | FontStyle.Underline);
}
else if ((Italics == false) && (Bold == true) && (Underline == false))
{
lblHello.Font = new System.Drawing.Font(FontType, FontSize, FontStyle.Bold);
}
else if ((Italics == false) && (Bold == true) && (Underline == true))
{
lblHello.Font = new System.Drawing.Font(FontType, FontSize, FontStyle.Bold | FontStyle.Underline);
}
else if ((Italics == false) && (Bold == false) && (Underline == true))
{
lblHello.Font = new System.Drawing.Font(FontType, FontSize, FontStyle.Underline);
}
else
{
lblHello.Font = new System.Drawing.Font(FontType, FontSize, FontStyle.Regular);
}
如上所述相当凌乱和笨重,任何帮助将非常感激。我确实考虑过做一个Switch而不是所有的if语句,但却找不到将上述所有内容都纳入其中的方法。
但最重要的是试图把它变成一个类,因为我没有运气,因为C#中的类似乎不喜欢从类外部引用表单控件和变量。
答案 0 :(得分:1)
你可以这样做:
FontStyle fontStyle = FontStyle.Regular;
if (Underline) { fontStyle |= FontStyle.Underline; }
// ..
lblHello.Font = new System.Drawing.Font(FontType, FontSize, fontStyle);
我会将事件绑定到单个检查更改的处理程序。您还可以引入一些计算属性:
public bool Underline { get { return chkUnderline.Checked; } }