我正在从数据表中填充datagridview.
在填充列和行时,我也同时对其进行格式化,这会导致datagridview加载速度非常慢,是否有解决此问题的方法?
小智 10
除了照顾之外AutoSizeColumnsMode,还要确保各列的AutoSizeMode属性也设置为除了所有单元格以外的其他列.
我也发现有必要使用
SendMessage(dg.Handle, WM_SETREDRAW, false, 0); // before
// updates to datagridview here...
SendMessage(dg.Handle, WM_SETREDRAW, true, 0); // after
Run Code Online (Sandbox Code Playgroud)
小智 8
这将是datagridview快速java jtable :)
public static class ExtensionMethods
{
public static void DoubleBuffered(this DataGridView dgv, bool setting)
{
Type dgvType = dgv.GetType();
PropertyInfo pi = dgvType.GetProperty("DoubleBuffered",
BindingFlags.Instance | BindingFlags.NonPublic);
pi.SetValue(dgv, setting, null);
}
}
ExtensionMethods.DoubleBuffered(dataGridView1, true);
Run Code Online (Sandbox Code Playgroud)
小智 7
我花了大约2-4分钟加载1-2k行.我更改了自动调整大小属性,现在它已经下降到几秒钟,大概是10-20.我在行创建循环之前运行此命令以确保它获得所有列.
foreach (DataGridViewColumn c in thisGrid.Columns)
{
c.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
}
Run Code Online (Sandbox Code Playgroud)
当您使用数据网格视图显示数据库中的数据时,您应该始终考虑使用某种策略来限制结果集并仅在用户真正看到记录时才显示记录。这有时称为虚拟模式或数据分页。我有一个wpf 策略的示例,但 winforms 也有一些策略。也看看这个问题:与 MS Access Grid 相比,Winform DataGridview 非常慢,我认为也与您的问题有关。
| 归档时间: |
|
| 查看次数: |
22284 次 |
| 最近记录: |