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はそれらのグループの1つに割り当てられます)が、ListViewItem自体は表示されません...
要求された情報で更新:
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に次のプロパティが追加されます。
パブリック文字列ExePathパブリック文字列IconFileNameパブリック文字列カテゴリパブリックリストカテゴリ
LegacyApplicationは、(私たちの)Applicationクラスにそれ以上のプロパティを追加しません。
以下の回答者が「サブアイテム」とはどういう意味かわかりません。ListViewItemsはListViewグループのサブアイテムです。おそらく...?
要求されていない情報(TMI?)で更新:
OK、すべてのグループがListViewに割り当てられたら、この方法で列を追加できると思います。
for(var item in listApplications.Groups) {
listApplications.Columns.Add(item)
}
...しかし今、特定のListViewItemsを特定の列に追加するにはどうすればよいですか?
それを(ある種の)仕事にした後に更新されました:
これをコメントアウトする:
listApplications.View = View.Details;
...表示するアイテムを取得します。ただし、テキストが切り捨てられているため、ここで別の質問をすることになりました。