代码之家  ›  专栏  ›  技术社区  ›  Konrad Morawski

数据绑定控件在刷新时“闪烁”

  •  0
  • Konrad Morawski  · 技术社区  · 15 年前

    这是件小事,但我只是想知道…

    Visual Studio 2008,C。

    我有一个带有数据绑定控件的主详细信息表单。当用户在列表框中选择记录时,表单上的多个数据绑定控件将更新所有详细信息。

    碰巧,当重新填充新的数据时,它们有点像“闪光”,或者说是闪烁,有点像一个电波在几秒钟内穿过物体:)不知道如何更好地解释它

    没什么大不了的,但它看起来“摇摇晃晃”又难看,所以,为了Ellegance,我只是想知道是否有一些简单的方法来防止它?

    我想打电话给你 悬挂布局 重新开始 (在容器控件上),但我应该处理哪些事件? 列表框所选值已更改 我想是因为暂停了…但是为了恢复?

    2 回复  |  直到 11 年前
        1
  •  2
  •   Community datashaman    7 年前

    当控件的数据刷新时,可以通过暂停绘制来防止闪烁。

    this stackoverflow question :

    [DllImport("user32.dll")]
    public static extern int SendMessage(IntPtr hWnd, Int32 wMsg, bool wParam, Int32 lParam);
    
    private const int WM_SETREDRAW = 11; 
    
    public static void SuspendDrawing(Control parent)
    {
        SendMessage(parent.Handle, WM_SETREDRAW, false, 0);
    }
    
    public static void ResumeDrawing(Control parent)
    {
        SendMessage(parent.Handle, WM_SETREDRAW, true, 0);
        parent.Refresh();
    }
    

    至于要处理哪些事件,我不确定。

        2
  •  0
  •   Andrew    15 年前

    我没注意到“SuspendLayout”对我有什么帮助,但值得一试。我想当所选项目被批量更改时,您需要锁定“currentChanged”事件。

    是否已将doubleBuffered(在“道具”窗口的“行为”下)设置为true?

    control.DoubleBuffered = true;