先看一下效果: 第一部分:Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { comboBox1.DrawItem += new DrawItemEventHandler(comboBox1_DrawItem); System.Drawing.Text.InstalledFontCollection ifc = new System.Drawing.Text.InstalledFontCollection(); FontFamily[] ffs = ifc.Families; foreach (FontFamily ff in ffs) //在这里的样式里表示Regular可能使用的字体 if (ff.IsStyleAvailable(FontStyle.Regular)) comboBox1.Items.Add(ff.Name); } private void comboBox1_DrawItem(object sender, DrawItemEventArgs e) { e.DrawBackground(); ComboBox cmb = (ComboBox)sender; string txt = e.Index > -1 ? cmb.Items[e.Index].ToString() : cmb.Text; Font f = new Font(txt, cmb.Font.Size); //使用格式刷 Brush b = new SolidBrush(e.ForeColor); //字符串描绘 float ym = (e.Bounds.Height - e.Graphics.MeasureString(txt, f).Height) / 2; e.Graphics.DrawString(txt, f, b, e.Bounds.X, e.Bounds.Y + ym); f.Dispose(); b.Dispose(); //描绘四角表示焦点的形状 e.DrawFocusRectangle(); } //combobox改变选择事件 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { // if (comboBox1.SelectedIndex == -1) // fontname = comboBox1.Items[32].ToString();//未被选择时设置默认,如果下面fontname设置了默认值,这里的if,else就没有必要要了。 // else fontname = comboBox1.Text; textBox1.Font = new Font(fontname,fontsize); } //listbox选择事件 private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { // if (listBox1.SelectedIndex == -1) // fontsize = float.Parse(listBox1.Items[1