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はそれらのグループの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;

...表示するアイテムを取得します。ただし、テキストが切り捨てられているため、ここで別の質問をすることになりました。

ListViewItemsのテキスト全体を表示する必要があります(切り捨てられていません)

4

1 に答える 1

1

this.listApplications.Items.Add(LegApp);を使用する代わりに、最初にListViewItemを作成してから、リストに追加しようとしましたか。

コードスニペットで詳細を教えてください

于 2012-04-04T08:05:35.387 に答える