You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手求教:点击ListBox项时如何更改TextBox的字体?

实现ListBox点击切换TextBox字体的方法

嘿,作为编程新手能完成加载系统字体到ListBox的功能已经超棒啦!接下来咱们一步步实现点击字体选项切换TextBox字体的功能,很简单的~

步骤1:给ListBox添加选中事件

你需要给FontListBox添加SelectedIndexChanged事件,这个事件会在用户点击ListBox里的选项时触发。有两种方式添加:

方式一:通过设计器添加(更适合新手)

  1. 打开Form的设计界面
  2. 选中你的FontListBox
  3. 在右侧的属性窗口里找到事件(闪电图标)
  4. 找到SelectedIndexChanged,双击它,VS会自动帮你生成事件处理方法的框架

方式二:通过代码手动绑定(在Form_Load里添加)

如果不想用设计器,也可以在你现有的Form1_Load方法末尾加上这段代码:

FontListBox.SelectedIndexChanged += FontListBox_SelectedIndexChanged;

步骤2:编写事件处理逻辑

接下来实现FontListBox_SelectedIndexChanged方法的内容,核心就是获取选中的字体名称,然后设置TextBox的字体:

private void FontListBox_SelectedIndexChanged(object sender, EventArgs e)
{
    // 先判断是否有选中项,避免空引用错误
    if (FontListBox.SelectedItem != null)
    {
        string selectedFontName = FontListBox.SelectedItem.ToString();
        try
        {
            // 设置TextBox的字体:保留原字号和样式,只修改字体名称
            textBox1.Font = new Font(selectedFontName, textBox1.Font.Size, textBox1.Font.Style);
        }
        catch (Exception ex)
        {
            // 捕获异常,比如某些特殊字体无法正常显示的情况
            MessageBox.Show($"无法应用该字体:{ex.Message}", "提示");
        }
    }
}

完整代码示例

把你的现有代码和新增的事件代码整合起来,大概是这样:

using System.Drawing.Text;
using System.Windows.Forms;

namespace YourNamespace // 替换成你的项目命名空间
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            InstalledFontCollection fonts = new InstalledFontCollection();
            try
            {
                foreach (FontFamily font in fonts.Families)
                {
                    FontListBox.Items.Add(font.Name);
                }
                // 可选:默认选中第一个字体,打开窗体就能看到效果
                if (FontListBox.Items.Count > 0)
                {
                    FontListBox.SelectedIndex = 0;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"加载字体失败:{ex.Message}", "错误");
            }
            // 如果是手动绑定事件,取消注释下面这行
            // FontListBox.SelectedIndexChanged += FontListBox_SelectedIndexChanged;
        }

        private void FontListBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (FontListBox.SelectedItem != null)
            {
                string selectedFontName = FontListBox.SelectedItem.ToString();
                try
                {
                    textBox1.Font = new Font(selectedFontName, textBox1.Font.Size, textBox1.Font.Style);
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"无法应用该字体:{ex.Message}", "提示");
                }
            }
        }
    }
}

小提示

  • 别忘了引用System.Drawing.Text命名空间,不然InstalledFontCollection会报错
  • 添加异常处理很重要,有些系统字体可能不支持常规文本显示,避免程序崩溃
  • 如果你想调整字号或样式,可以修改new Font()里的参数,比如改成固定字号12f,或者设置粗体FontStyle.Bold

内容的提问来源于stack exchange,提问作者Akiko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:24:17