如何用C#实现Word里的字体选择下拉列表框!


第一步,新建一个默认的C#项目,相信大家一步大家都会了,我就不重复了。


第二步,在窗体上添加一个ComboBox控件。修改ComboBox的name属性为cboFont;修改DrawMode属性为第三项OwnerDrawVariable,此项的属性的意思是:ComboBox列表框的内容为手工绘制且高度不等。

第三步,在public class里编写以下代码:
    private System.Drawing.Text.InstalledFontCollection objFont =new System.Drawing.Text.InstalledFontCollection();
注:这一句代码作用是引入系统中安装的字体;

第四步,双击窗体,进入窗体的Load事件,在Load事件中编写以下代码:
  foreach (System.Drawing.FontFamily i in objFont.Families)
  {
     cboFont.Items.Add(i.Name.ToString());
  }
  cboFont.SelectedIndex=0;
注:遍列系统中的字体,添加字体进ComboBox控件,设置默认选择为第一项

第五步:因为我们在第二步里设置ComboBox的绘制方法为手工绘制且高度不等,那么在绘制之前,我们需要先设置第一项的高度,所以我们就用到了MeasureItem属性。在列表属性里选择事件列表,然后双击MeasureItem事件,然后在该事件里写以下代码:
  System.Drawing.Font objFonts =new Font(cboFont.Items[e.Index].ToString(),14);
  e.ItemHeight=objFonts.Height;
注:因为每个字体的样式不同,所以高度也是不同的,每当我们往comboBox控件里添加一项字体的时候就要重新计算一次将要添加字体的高度;

第六步:设置完高度以后,我们就要开始绘制字体了。在DrawItem事件(同添加MeasureItem事件的步骤一样)里添加以下代码:
  System.Drawing.Font objFonts=new Font(cboFont.Items[e.Index].ToString(),14);
  e.DrawBackground();
  e.Graphics.DrawString(cboFont.Items[e.Index].ToString(),objFonts,new SolidBrush(e.ForeColor),new Point(e.Bounds.Left,e.Bounds.Top));
注:同MeasureItem事件一样,我们需要先设置字体的样式。然后重绘背景,为什么需要重绘背景呢?每当窗体刷新一新,那么comboBox控件就会重新绘新一遍字体,如果不重绘背景,就会出现字体重影。然后我们使用Gragpics属性里的Drawstring方法绘制,这里有几个参数,第一个参数是:要绘制的字体;第二个参数是:要绘制的字体样式,这里我们用刚才定义的objFonts;第三个参数是:使用哪一种刷子来绘制,在这里我们使用纯色刷子,使用的颜色为ComboBox的前景色。第四个参数就是要从哪个位置开始绘制了。

然后,保存,运行程序,我们就可以看到Word里的字体选择下拉列表框的效果了。
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值