[求助,急]关于在一个窗体程序中获取主窗体支持的字体族问题
就是写了个windows的窗体程序,
在主窗体类Form1中
定义了一个组合框(name:cbxFont)
然后又添加了一个方法:GetFontFamilies()
代码如下:
private void GetFontFamilies()
{
Graphics g = this.CreateGraphics();
FontFamily[] ffs = FontFamily.GetFamilies(g);
for(int i = 0; i<ffs.Length;i++)
{
cbxFont.Items.Add(ffs[i].Name);
}
}
目的就是想让cbxFont的Items项为主窗体支持的字体族。可是,我现实和理想总是有一定的差距 :( :
当我编译没有错误的时候没有问题,当我执行的时候问题就来了,cbxFont.Items 没有被赋值,郁闷了。可是又不知道是哪里我做错了。
各位达人,救命。我就只能拿出我30%的财产---分,聊表谢意。
问题点数:70、回复次数:3Top
1 楼senkiner(金龍)回复于 2004-05-02 01:48:05 得分 70
上面的代码是没有问题的,建议你检查一下其它部分的代码,比如
#region Windows 窗体设计器生成的代码
……//这里面
#endregion
或者其他对cbxFont进行了操作的地方。Top
2 楼wildwolfsun(菜鸟初飞)回复于 2004-05-02 11:43:05 得分 0
改了下窗体设计器的代码,cbxFont.Items 好像有值了,可是有新问题:在定义
cbxFont的操作时运行出错:代码如下:
private void cbxFont_SelectedIndexChanged(object sender, System.EventArgs e)
{
string fontname;
if (cbxFont.SelectedIndex == -1)
fontname = cbxFont.Items[66].ToString();
else
fontname = cbxFont.Items[cbxFont.SelectedIndex].ToString();
txtEdit.Font = new Font(fontname,
float.Parse(lbxSize.SelectedItem.ToString()));
}
调试发现,执行到下面这一条语句时出错:
txtEdit.Font = new Font(fontname,
float.Parse(lbxSize.SelectedItem.ToString()));
出错类型:其他信息: 未将对象引用设置到对象的实例;
快要疯了,高手救命啊。Top
3 楼senkiner(金龍)回复于 2004-05-04 14:44:07 得分 0
你的lbxSize应该是一个listBox吧,出现这种错误的原因是你并没有选中lbxSize中的任何项,你要先选中lbxSize中的一项,然后再选cbxFont中的。
if(lbxSize.SelectedIndex != -1)
txtEdit.Font = new Font(fontname,float.Parse(lbxSize.SelectedItem.ToString()));
else
txtEdit.Font = new Font(fontname,float.Parse(lbxSize.Items[0].ToString()));
Top




