0

我正在动态创建 ListViewItem 后代:

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

我首先将这些存储在对象列表中:

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

..这边走:

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:

public string ExePath public string IconFileName public string Category public List Categories

LegacyApplication 没有向(我们的)Application 类添加更多属性。

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

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

好的,我想我可以通过这种方式添加列,一旦所有组都分配给 ListView:

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

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

让它(某种)工作后更新:

注释掉这个:

listApplications.View = View.Details;

...获取要显示的项目。但是,文本被截断,这导致我在这里提出另一个问题:

我需要显示我的 ListViewItems 的整个文本(未截断)

4

1 回答 1

1

您是否尝试先创建一个 ListViewItem 然后添加到 List 而不是使用 this.listApplications.Items.Add(LegApp);

您能否通过代码片段提供更多详细信息

于 2012-04-04T08:05:35.387 回答