Я бы хотел, чтобы мое окно не обновлялось до тех пор, пока я не получу данные с сервера и не сделаю его. Можно ли подключиться к событию WM_PAINT или еще лучше вызвать некоторый метод Win32API, чтобы предотвратить обновление окна и размораживание его позже?Как остановить рендеринг окна и позже возобновить?
Подробнее: В контексте MMC оснастки, написанной в C#, наше приложение страдает от раздражающего мерцания и двойного поведения сортировки: Мы используем ListViews MMC, но так как мы подписываемся на событие сортировки. MMC делает свою собственную магию и сортирует отображаемую страницу (и мы не можем ее переопределить), и когда мы получаем ответ от нашего сервера, мы снова меняем listView. каждое изменение строки выполняется последовательно, нет beginUpdate и т. Д. (AFAIK).
Мне очень жаль, но как вы делаете эту работу (зацепите WM_PAINT) от mmc? У меня те же проблемы на древовидном представлении - тяжелое мерцание при удалении подузлов - каждый IConsoleNameSpace-> DeleteItem вызывает WM_PAINT + WM_ERASEBKGND ... – bgee
Возможно, эта ссылка поможет? http://msdn.microsoft.com/en-us/library/system.windows.forms.application.addmessagefilter.aspx - Мне не нужно было это делать, поскольку наша проблема была в основном с listviews, и мы полностью заменили их с FormViews, содержащими списки просмотров WPF, размещенные в Winforms elementhost (~~ да, мы сделали! ~~). но я также столкнулся с этим мерцанием древовидной структуры, может на самом деле попробовать это однажды. –
Прежде всего спасибо. Но в нашем случае это должно быть определено в интерфейсах mmc ... Я попытался LockUpdateWindow, и он сработал, но каким-то образом он заставил другие окна мерцать :) – bgee