2012-04-03 71 views
0

我动态创建ListViewItem的后裔:我的动态创建ListViewItems没有在我的ListView中显示

class Application : ListViewItem { 
. . . 
class LegacyApplication : Application { 

我存储这些先在obects的列表:

private List<object> legacyApps = new List<object>(); 

..this方式:

if (ldbc.appIsLegacy(sPathOfExe)) { 
    legacyApp = new LegacyApplication(sApp, sTitle, sDesc, sIconFileName, sPathOfExe, appCategoriesForCurrentApp); 
} 
legacyApps.Add(legacyApp); 

...然后我将它们添加到主窗体上的ListView:

foreach (LegacyApplication LegApp in legacyApps) { 
    this.listApplications.Items.Add(LegApp); 
} 

...但ListView不显示它们。它显示我创建ListView控件组(每个ListViewItem的被分配给这些组中的一个),但不是ListViewItems自己...

与要求的信息更新时间:

为ListViewItem的后裔外观构造像这样:

public LegacyApplication(String AAppName, String ATitle, String ADesc, String AIconFileName, String APathOfExe, List<String> ACategories) { 
    base.Name = String.Format("legapplvi{0}", AAppName); 
    base.Text = ATitle; // "Title" is a short description - between exe name and Description 
    base.ToolTipText = ADesc; 
    base.EnsureVisible(); 
    // "base" above means ListViewItem; "base" below refers to our Application class* 
    base.Categories = ACategories; 
    base.ExePath = APathOfExe; 
    base.IconFileName = AIconFileName; 
} 
  • 它增加了下列属性的ListViewItem:

公共STRI NG ExePath 公共字符串IconFileName 公共字符串类别 公开名单分类

LegacyApplication不会增加更多的属性来(我们的)应用程序类。

我不确定受访者下面的意思是“子项目” - ListViewItems是ListView组的子项,也许...?

更新了未经请求的信息(TMI):

OK,我想我可以添加列,这样,一旦所有的组分配给ListView:

for(var item in listApplications.Groups) { 
     listApplications.Columns.Add(item)  
} 

...但现在,我该如何添加特定的ListViewItems到特定的列?

谈到了这一点::

它前往(排序)下班后更新

listApplications.View = View.Details; 

...获取要显示的项目。然而,文本被截断,造成我在这里提出一个问题:

I need to display the entire Text of my ListViewItems (not truncated)

+1

你能提供有关你如何设置文本和子项在被继承的ListViewItem类中的ListViewItem的一点点更详细?此外,你的ListView的属性是什么? – scwagner 2012-04-03 20:13:52

+0

当然;我会在上面追加它。 – 2012-04-03 20:43:22

+0

如果您使用View = Details,那么不要忘记添加ColumnHeaders。没有任何你不会看到添加的项目。 – 2012-04-03 20:54:16

回答

1

你尝试先创建一个ListViewItem,然后添加到列表,而不是使用 this.listApplications.Items.Add (LegApp);

你能否提供更多细节之处的代码片断

+0

我得到它的工作 - 虽然我现在还记不得现在如何! – 2012-04-05 04:41:42

相关问题