基于 C# WinForm 字体编辑器开发记录:从基础到进阶

发布于:2025-08-15 ⋅ 阅读:(21) ⋅ 点赞:(0)

目录

基础版本实现

进阶版本改进

字体设置窗体增强

主窗体改进

功能对比


项目在本文章的绑定资源中免费的,0积分就可以下载哦~

在 Windows Forms 应用开发中,字体编辑功能是许多文本处理软件的基础功能。本文将分享一个简易字体编辑器的开发过程,从基础版本到进阶版本的实现思路。

基础版本实现

基础版本的字体编辑器包含两个窗体:主窗体 (Form1) 和字体设置窗体 (Form2)。

主窗体主要包含一个文本框和一个 "样式设定" 按钮,代码结构如下:

// Form1.cs
private void button1_Click(object sender, EventArgs e)
{
    Form2 f2 = new Form2();
    if (f2.ShowDialog() == DialogResult.OK)
    {
        textBox1.Font = new Font(f2.comboBox1.SelectedItem.ToString(), (float)f2.numericUpDown1.Value);
    }
}

字体设置窗体包含字体选择下拉框、字体大小数字框和确定 / 取消按钮:

// Form2.cs
public Form2()
{
    InitializeComponent();
    //设置初始值
    comboBox1.SelectedIndex = 0;//下拉框初始索引
    numericUpDown1.Value = 12;//数字框初始值
}

在设计器中,我们为 Form2 添加了必要的控件,并设置了按钮的 DialogResult 属性,使窗体能够正确返回用户操作结果。

进阶版本改进

进阶版本在基础版本上增加了更多功能,主要改进包括:

  1. 使用 RichTextBox 替代 TextBox,支持部分文本字体修改
  2. 增加右键菜单触发字体设置
  3. 增加粗体和斜体样式选择
  4. 动态加载系统字体列表

字体设置窗体增强

进阶版的 Form2 增加了粗体和斜体复选框,并提供了 SelectedFont 属性方便主窗体获取设置:

// 进阶版Form2.cs
public Font SelectedFont { get; private set; }

public Form2()
{
    InitializeComponent();
    // 初始化字体列表
    foreach (var fontFamily in FontFamily.Families)
    {
        FontcomboBox.Items.Add(fontFamily.Name);
    }
    if (FontcomboBox.Items.Count > 0)
    {
        FontcomboBox.SelectedIndex = 0;
    }
}

private void button1_Click(object sender, EventArgs e)
{
    // 获取用户选择的字体
    string selectedFontName = FontcomboBox.SelectedItem as string;
    FontFamily selectedFamily = FontFamily.Families.FirstOrDefault(f => f.Name == selectedFontName);
    float fontSize = (float)fontSizeNumericUpDown.Value;

    // 处理字体样式
    FontStyle style = FontStyle.Regular;
    if (boldCheckBox.Checked)
        style |= FontStyle.Bold;
    if (italicCheckBox.Checked)
        style |= FontStyle.Italic;

    SelectedFont = new Font(selectedFamily, fontSize, style);
    button1.DialogResult = DialogResult.OK;
}

主窗体改进

主窗体使用 RichTextBox 并通过右键菜单触发字体设置:

// 进阶版Form1.cs
private void 更改字体ToolStripMenuItem_Click(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    if (form2.ShowDialog() == DialogResult.OK)
    {
        // 检查是否有选中的文本
        if (richTextBox1.SelectionLength > 0)
        {
            // 只修改选中部分的字体
            richTextBox1.SelectionFont = form2.SelectedFont;
        }
        else
        {
            // 没有选中内容则修改整个文本框字体
            richTextBox1.Font = form2.SelectedFont;
        }
        MessageBox.Show("字体修改成功!", "提示");
    }
}

功能对比

功能 基础版本 进阶版本
文本控件 TextBox RichTextBox
字体选择 固定列表 系统字体列表
样式支持 仅字体和大小 字体、大小、粗体、斜体
部分文本修改 不支持 支持
触发方式 按钮 右键菜单

通过这个字体编辑器的开发,我们可以看到从简单到复杂功能的演进过程,以及 Windows Forms 控件的灵活应用。RichTextBox 控件提供的选择文本操作功能,为实现部分文本样式修改提供了便利。