0

创建一个文本编辑器只是为了进一步磨练我的编程技能。我有打开新文本文件的winform,保存它们以及通常的撤消、重做、复制、粘贴等。但是。我现在正在尝试更改字体。

当您单击菜单条中的“更改字体”按钮时,会出现一个新表单并将您可以使用的所有可用字体加载到列表框中。

List<string> fonts = new List<string>();

        foreach (FontFamily font in System.Drawing.FontFamily.Families)
        {
            fonts.Add(font.Name);
        }

        listboxfont.DataSource = fonts;

现在,在我编辑另一页上的文本之前,我想编辑一个示例标签来测试一切是否正常!

经过一番研究,我遇到了很多这样的代码..

lblsample.Font = new Font(listboxfont.SelectedItem, 12);

我可能是错的,但我看不出为什么我不能使用列表框中的选定项目,它是字体并使用它来编辑标签,但是它给了我错误..

“Text_editor.font 不包含带有 2 个参数的构造函数。

已经尝试过,但没有运气。有人可以帮忙吗?

4

3 回答 3

1

这是因为listboxfont.SelectedItem是一个object. 您需要将其转换为string

lblsample.Font = new Font((string)listboxfont.SelectedItem, 12);

或者,如果您愿意:

lblsample.Font = new Font(listboxfont.SelectedItem.ToString(), 12);

这应该够了吧!

更新 - 完整示例

添加列表框命名listboxfont

添加标签命名lblsample

添加按钮命名btnPreview

private void Form1_Load(object sender, EventArgs e)
{
    List<string> fonts = new List<string>();

    foreach (FontFamily font in System.Drawing.FontFamily.Families)
    {
        fonts.Add(font.Name);
    }
    listboxfont.DataSource = fonts;
}

private void btnPreview_Click(object sender, EventArgs e)
{
    lblsample.Font = new Font(listboxfont.SelectedItem.ToString(), 12);
}
于 2013-04-29T14:57:02.770 回答
0

您已经声明了一个以font您的Text_editor表单命名的变量。(注意大小写..全部小写!)

或者

您在问题中输入的消息有错字。是Text_editor.fonts does not contain a constructor that takes 2 arguments.吗?如果是,那么你fonts错误地使用了你的变量,它不是Font类型,而是List<string>类型。

正确命名您的变量,它应该开始工作。

于 2013-04-29T21:54:28.080 回答
0

尝试这个:

lblsample.Font = new Font(listboxfont.SelectedItem.ToString(), 12.0f);

Font 构造函数请求一个字符串和一个浮点数

公共字体(
字符串familyName,
浮动emSize

于 2013-04-29T22:02:26.807 回答