首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在类中更改字体样式而不是交互和防止重复代码

在类中更改字体样式而不是交互和防止重复代码
EN

Stack Overflow用户
提问于 2016-03-14 23:22:58
回答 1查看 37关注 0票数 0

我正在重新开始编写代码(我没有什么经验,只是受过一些教育)。我正在尝试创建一个hello world程序,在这个程序中,您可以更改字体的所有方面,并且目前还停留在更改类中的字体样式上。

我之所以想在类中这样做,是因为我不想对Bold、斜体和下划线的每个复选框重复相同的代码。到目前为止,我已经得到了一个基本的概念,但我觉得它的漫长和漫长,要么可以缩短,或至少可以成为某种形式的类,以便在需要时调用。到目前为止,这就是我所拥有的:

代码语言:javascript
复制
    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);
        }

正如所说的相当混乱和笨重,任何帮助都将非常感谢。我确实考虑过要做一个开关,而不是所有的if语句,但是我想不出有什么方法可以让上面的所有内容都进入到其中。

但是最重要的是尝试将它放到类中,因为我在那里没有任何运气,因为C#中的类似乎不喜欢引用类之外的表单、控件和变量。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-14 23:26:52

你可以这样做:

代码语言:javascript
复制
FontStyle fontStyle = FontStyle.Regular;

if (Underline) { fontStyle |= FontStyle.Underline; }
// ..

lblHello.Font = new System.Drawing.Font(FontType, FontSize, fontStyle);

我会将事件绑定到一个已更改的检查处理程序。还可以介绍一些计算属性:

代码语言:javascript
复制
public bool Underline { get { return chkUnderline.Checked; } }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35999926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档