当我们设置控件的字体时,有时候会发现很多字体在vs编辑器中是找不到的。举个例子:times new roman 这个新罗马字体是我们常用的,但是在编辑器中确实找不到,不信读者可以试试。

首先要先找到times new roman 格式的文件,这个可以在网上下载,也可以直接在电脑硬盘中搜,一般来说电脑中都会有的,文字格式文件是以.ttf格式存储的。

打开计算机,在右上角搜索框中输入“?.ttf”搜索可能需要些时间,具体搜索示意如下图:

第二步:将times new roman 格式文件复制到当前项目的文件夹下,我是在文件的sln文件所在层新建了一个res文件夹,然后把格式文件复制到该文件夹下的。(读者可以以自己的方式存储,只要在代码中修改下就可以了)

第三步:在代码编辑器中,写一个带返回值的过程importfont(),代码如下:

imports system.drawing.text
module module2
    '导入外部字体
    public function importfont() as font
        '  获取字体文件的路径
        dim path = replace(application.startuppath, "\bin\debug", "\res\segoeui.ttf")
        try
            dim newfont1 as new privatefontcollection '建立一个 个人格式集合对象
            newfont1.addfontfile(path) '通过路径访问格式文件(这里的路径一定要对)
            'new font()里面可选多个参数,第一个参数就是格式名,第二个参数是字体大小,第三个参数是字体的粗细,正斜下划线等选项,
            '第四个参数是字体的度量单位,后面还有,不过是可选参数我直接默认了。读者可以自行试试
            dim newfont as font = new font(newfont1.families(0).name, 12, fontstyle.regular, graphicsunit.pixel)
            return newfont
        catch ex as exception
            return nothing
        end try

    end function

end module

这样只要调用该函数就可以获得一个类型是font的变量,该变量的值就是times newroman格式了

  '设置整个窗体中控件的字体
    private sub setcontrolfont()
        dim font1 as font = importfont()
        '使用镶嵌循环语句,保证每个控件的字体都设置
        if font1 isnot nothing then
            for each cotr as control in controls
                cotr.font = font1
                if cotr.controls isnot nothing then
                    for each cotr1 as control in cotr.controls
                        cotr1.font = font1
                    next
                end if
            next         
        end if    
    end sub

好了,设置好了,只要在窗体的load事件中调用setcontrolfont()函数就可以设置该项目窗体上的每个控件的字体为times new roman

 private sub frm_main_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load

        setcontrolfont()
    end sub