我应该使用哪种方法或事件预填充扩展的ListView?

时间:2009-03-07 23:09:33

标签: c# .net winforms listview

我在C#WinForms中编写了一个扩展的ListView。它的目的是使用WinAPI显示当前运行的应用程序列表。但是,如果我尝试在构造函数中填充ListView,它在我运行应用程序时会起作用,但如果您尝试将控件放在任何表单上,它将会导致VS 2008崩溃。

崩溃的原因是我认为是由于使用ThreadPool或使用P / Invoke调用引起的。我试图将它包装在条件中以检查DesignMode属性,但我发现它总是在构造函数中返回false。 为了解决我的问题,我覆盖了ListView基类的InitLayout方法并将我的普及代码放在那里,但我不认为这是最好的地方。

有没有人知道将我的预填充代码放在扩展ListView中的最佳位置?

谢谢!

这是修复的样子:

protected override void InitLayout()
{
    if (DesignMode)
        return;

    RefreshApplications();

    base.InitLayout();
}

1 个答案:

答案 0 :(得分:2)

用它来区分设计模式和运行应用程序:

if (LicenseManager.UsageMode != LicenseUsageMode.Designtime)
{
}