Какой метод или событие я должен использовать, предварительно заполнить расширенный ListView? - PullRequest
0 голосов
/ 08 марта 2009

Я написал расширенный 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();
}

1 Ответ

2 голосов
/ 08 марта 2009

Используйте это, чтобы различать режим разработки и запущенное приложение:

if (LicenseManager.UsageMode != LicenseUsageMode.Designtime)
{
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...