簡體   English   中英

加速datagridview單元格字體更改

[英]Speeding up datagridview cell font change

我已經測試了很多,問題是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個細胞。 一切都很快,應該如此,但是如果我改變字體,那就需要花費很多時間! 單元字體更改。

我不喜歡你的代碼是你為每個單元格使用'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單元格,而不僅僅是字體。

問題是我在dataGridView1屬性中AutoSizeColumnsMod = AllCells

我需要的是什么,但它在每次改變時都會調用它。 所以我只是在代碼中以編程方式使用它,而不是像之前在dataGridView1屬性中那樣使用它。

還要感謝每位助手。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM