【问题标题】:Stop refreshing datagridview when scrolling滚动时停止刷新datagridview
【发布时间】:2017-01-12 15:38:13
【问题描述】:

我在 DataGridView 中显示了很多结果(行和列)。当我上下或左右滚动时,datagridview 正在刷新并且每次都会显示单元格。这很烦人,因为刷新,特别是当您在 DataGridViewControl_CellFormatting 事件中进行一些操作时。 在 dataGridView 中滚动时如何停止刷新? 我在 C# 中使用 WinForms

【问题讨论】:

  • 我用 2000 个项目填充了一个 datagridview 来为您测试,但我无法重现您的问题。刷新我认为你的意思是它的闪烁?你试过dubblebuffered吗?我已经发布了一个答案,包括那个。
  • 是的,我就是这个意思。每次我滚动到 datagridview 时,网格都会闪烁

标签: c# winforms scroll datagridview refresh


【解决方案1】:
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);
}

这是为了在数据网格视图上启用双缓冲。我是从SO得到这个的

【讨论】:

  • 很好的发现,虽然我同意 cody:您发布的方法使用反射来更改 DataGridView 控件上的非公共属性。这是一个可以接受的解决方案,但仅继承现有的 DataGridView 控件并使用“DoubleBuffered”样式集创建您自己的自定义控件可能更简洁。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-19
  • 1970-01-01
  • 2015-03-01
相关资源
最近更新 更多