Я написал расширенный ListView в C # WinForms. Его цель - показать список запущенных приложений, использующих WinAPI. Однако, если я попытаюсь заполнить ListView в конструкторе, он будет работать при запуске приложения, но если вы попытаетесь поместить элемент управления в любую форму, произойдет сбой VS 2008.
Причина сбоя, по-моему, вызвана использованием ThreadPool или использованием вызовов P / Invoke. Я попытался обернуть его в условное выражение для проверки свойства DesignMode, но обнаружил, что в конструкторе всегда будет возвращаться значение false.
Чтобы решить мою проблему, я переопределил метод InitLayout базового класса ListView и поместил туда свой код популяции, но я не думаю, что это лучшее место для его размещения.
Кто-нибудь знает, где лучше всего разместить мой код до заполнения в расширенном ListView?
Спасибо!
Вот как выглядит исправление:
protected override void InitLayout()
{
if (DesignMode)
return;
RefreshApplications();
base.InitLayout();
}