我正在动态创建ListViewItem后代:
class Application : ListViewItem {
. . .
class LegacyApplication : Application {
我首先将它们存储在一个obects列表中:
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;
}
公共字符串ExePath 公共字符串IconFileName 公共字符串类别 公共列表类别
LegacyApplication不向(我们的)应用程序类添加其他属性。
我不确定“subitems”下面的响应者是什么意思 - ListViewItems是ListView组的子项,也许......?
更新了未请求的信息(TMI?):
好的,我想我可以这样添加列,一旦将所有组分配给ListView:
for(var item in listApplications.Groups) {
listApplications.Columns.Add(item)
}
...但现在,如何将特定的ListViewItem添加到特定列?
获得(某种)工作后更新:
评论这个:
listApplications.View = View.Details;
...获取要显示的项目。但是,文本被截断,这使我在这里提出另一个问题:
I need to display the entire Text of my ListViewItems (not truncated)
答案 0 :(得分:1)
您是否首先尝试创建ListViewItem,然后添加到List而不是使用 this.listApplications.Items.Add(LegApp);
您能否通过代码段提供更多详细信息