我已经做了很多测试,问题是这些代码中的100%是其中之一(我可以在调试模式下清楚地看到它):
datagridview1.Rows[rowOld].Cells[cell].Style.Font = datagridview1.DefaultCellStyle.Font;
,如果我尝试使用其他代码更改字体也没关系,例如:
Font fontBold = null;
fontBold = new Font("Microsoft Sans Serif", 11.5F, FontStyle.Bold);
datagridview1.Rows[r].Cells[c].Style.Font = fontBold;
或:
datagridview1.Rows[r].Cells[c].Style.Font = new Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular);
每个人大约需要800-1000毫秒。 那真是怪了?还是正常?
我的“ datagridview1”仅包含4000头母牛和7个细胞。 一切都很快,确实如此,但是如果我更改字体,仅需1个时间就可以了!单元字体更改。
答案 0 :(得分:2)
我在您的代码中不喜欢的是您对每个单元格都使用“ new Font()”。我相信您的单元格可以共享相同的字体对象。我不确定这是否可以解决您的问题,但请尝试创建预定义的Font类变量。例如,创建一些Font类实例作为WinForms类的成员变量,然后仅引用现有的Font变量。在Windows GDI中,每种字体都具有句柄(HFONT),在使用完它之后必须将其丢弃。您在这里失去了一些表现。
例如:
private Font _fontArial = new Font("Arial", 8.25F, FontStyle.Regular);
private Font _fontArialBold = new Font("Arial", 8.25F, FontStyle.Bold);
private Font _fontTahoma = new Font("Tahoma", 8.25F, FontStyle.Regular);
然后只重用预定义的字体:
datagridview1.Rows[r].Cells[c].Style.Font = _fontArialBold;
还要注意,您可以创建预定义的样式,并替换DataGridView单元的整个样式,而不仅仅是字体。
答案 1 :(得分:1)
问题是我在 dataGridView1属性中具有 AutoSizeColumnsMod = AllCells 。
我需要,但是每次更改都会调用它。 因此,我仅在代码中以编程方式使用了它一次,而没有像以前那样在 dataGridView1属性中使用它。
仍然感谢每位助手。