Элементы управления с привязкой к данным «мигают» по мере их обновления - PullRequest
0 голосов
/ 18 февраля 2010

Это небольшая вещь, но мне просто интересно ...

Visual Studio 2008, C #.

У меня есть форма с подробной информацией и элементами управления с привязкой к данным.Когда пользователь выбирает запись в списке, все детали обновляются в нескольких элементах управления с привязкой к данным в форме.

Как это происходит, они как бы «мигают» или мигают, когда заполняются новыми данными и сортируютсякак электрическая волна, проходящая через форму за доли секунды :) не знаю, как это объяснить лучше

Ничего страшного, но, тем не менее, она выглядит «шаткой» и уродливой, так чторади элегантности, мне было просто интересно, есть ли какой-нибудь простой способ предотвратить это?

Я думал о вызове SuspendLayout и ResumeLayout (на контроллере контейнера), но какие события я должен обрабатывать? listBox_SelectedValueChanged для его приостановки, я думаю ... но для возобновления?

Ответы [ 2 ]

2 голосов
/ 18 февраля 2010

Вы можете предотвратить мерцание, приостановив рисование при обновлении данных элемента управления.

С этот вопрос переполнения стека :

[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();
}

Что касается обработки событий, я не уверен.

0 голосов
/ 18 февраля 2010

Я не заметил, что «SuspendLayout» что-то сделал для меня, но стоит попробовать. Я думаю, что вы захотите зафиксировать событие «CurrentChanged», когда выбранный товар меняется оптом.

Вы установили для DoubleBuffered (в разделе "поведение" в окне "реквизиты") значение true?

control.DoubleBuffered = true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...