目录
项目在本文章的绑定资源中免费的,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 属性,使窗体能够正确返回用户操作结果。
进阶版本改进
进阶版本在基础版本上增加了更多功能,主要改进包括:
- 使用 RichTextBox 替代 TextBox,支持部分文本字体修改
- 增加右键菜单触发字体设置
- 增加粗体和斜体样式选择
- 动态加载系统字体列表
字体设置窗体增强
进阶版的 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 控件提供的选择文本操作功能,为实现部分文本样式修改提供了便利。