как перестать мерцать в форме приложения С# windowsforms?

У меня есть главная панель и Auto Scroll=true, и все элементы управления размещены на главной панели. Функциональность работает нормально, но когда я нажимаю на любой элемент управления или прокручиваю вниз или вверх, он начинает мерцать на секунду каждый раз, когда я нажимаю или прокручиваю,

Я также установил

 DoubleBuffered = true; 

но это не работает для меня.

Может ли кто-нибудь предложить мне решение или новый код, который может мне помочь? Я потратил 2 дня на эту проблему. заранее спасибо.


person Saeed Khan    schedule 15.04.2013    source источник
comment
возможный дубликат Как исправить мерцание в элементах управления пользователя   -  person Hans Passant    schedule 15.04.2013


Ответы (1)


Вы можете попробовать поместить это в свой класс форм:

private const int WM_HSCROLL = 0x114;
private const int WM_VSCROLL = 0x115;

protected override void WndProc (ref Message m)
{
    if ((m.Msg == WM_HSCROLL || m.Msg == WM_VSCROLL)
        && (((int)m.WParam & 0xFFFF) == 5))
    {
        // Change SB_THUMBTRACK to SB_THUMBPOSITION
        m.WParam = (IntPtr)(((int)m.WParam & ~0xFFFF) | 4);
    }
    base.WndProc (ref m);
}

Вы также можете добавить это в конструктор класса форм:

SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);

Я использую Windows 8, и у меня не мерцает панель с AutoScroll = true. но вышеперечисленные методы должны устранить мерцание.

person Nicolas Tyler    schedule 15.04.2013
comment
Я вставил этот код в свой класс формы, но он больше не работает для меня, предложение или код? - person Saeed Khan; 15.04.2013