私はWinFormsが新しく、追加データをListViewItem
に追加する方法を理解できません。私はMFCでSetItemDataPtr
を使用することができますが、WinFormsでこれを行う方法を覚えていますか?WinForms ListViewItemに追加データを追加する
答えて
ListViewItem.Tagプロパティを使用すると、SetItemDataPtr()に相当するオブジェクトへの参照を格納できます。 Nameプロパティは、辞書<のキーとして機能するのに便利です。また、IndexプロパティはList <>のインデックスに役立ちます。後者の2つのアプローチがより良い解決策です。通常は、データをビューから切り離しておく必要があります。
MSDNでListViewItemクラスを調べましたか?そこにはサンプルと共に豊富な情報があります。
// Create three items and three sets of subitems for each item.
ListViewItem item1 = new ListViewItem("item1",0);
// Place a check mark next to the item.
item1.Checked = true;
item1.SubItems.Add("1");
item1.SubItems.Add("2");
item1.SubItems.Add("3");
ListViewItem item2 = new ListViewItem("item2",1);
item2.SubItems.Add("4");
item2.SubItems.Add("5");
item2.SubItems.Add("6");
ListViewItem item3 = new ListViewItem("item3",0);
// Place a check mark next to the item.
item3.Checked = true;
item3.SubItems.Add("7");
item3.SubItems.Add("8");
item3.SubItems.Add("9");
1つの方法:独自のクラスを作成する必要があります(例:MyItem
)。List<MyItem>
にアイテムを配置します。次に、データバインディングを使用します。クラスMyItem
は、文字列を返すToString()
メソッドを実装する必要がありますが、ListViewに表示されます。
最も推奨される方法は、ListViewItem
から派生して独自のクラスを作成し、このクラスのインスタンスをListView
に追加することです。この方法で、アイテムに任意のデータを保存することができます。
- あなたの項目データがタイプセーフにすることができ、あなたが各アクセスにObjectからキャストする必要はありません。
これは、いくつかの理由により、
Tag
プロパティを使用するよりも優れています。 - 複数の値を格納できます。
- オブジェクト指向プログラミングの方が正しいです。
- 潜在的な将来の拡張によって、
Tag
プロパティを自由に使用できるようにします。
最初の箇条書きは正確ではありませんが、Itemから参照を取得するときにListViewItemからキャストする必要があります。 –
Trueですが、ListViewItemをキャストして、すべてのデータプロパティに安全にアクセスしてから、データのTagプロパティをキャストしたいとは思わないでしょうか? – Ran
- 1. ListViewItemにコンボボックスを追加します。
- 2. winformsにADO.Netデータソースを追加する
- 3. コンボボックスをdatagridviewに追加するC#Winforms
- 4. Winforms TableLayoutPanelプログラムで行を追加する
- 5. WinFormsを追加するAppメニュー項目
- 6. C#WinFormsコンテキストメニューにチェックボックスを追加
- 7. Visual Studio Winforms - リソースファイルにSVGイメージを追加
- 8. WinFormsパネル内にメニューを追加
- 9. ミュールペイロードに追加データを追加するには?
- 10. 凡例に追加データを追加する
- 11. Listview - データを追加する
- 12. 追加BLOBデータ
- 13. コントロールを追加するときにwinforms UIをロックする
- 14. 「追加ボタン」を追加するには?
- 15. ExtJSはフォームの投稿に追加データを追加します
- 16. Winforms UserControlsの追加と削除
- 17. 追加データを追加するSSRSヒストグラム。 (チャート)
- 18. C#xlsxにデータを追加
- 19. キューにデータを追加
- 20. JSONファイルにデータを追加
- 21. モーダルダイアログにデータを追加
- 22. arraylistにデータを追加
- 23. FileStreamトップにデータを追加
- 24. Android - データベースにデータを追加
- 25. Ajax - データをURLに追加
- 26. DataTableにデータを追加
- 27. MAGENTO - カスタムモジュールにデータを追加
- 28. エンティティフレームワークテーブルにデータを追加
- 29. htmlテーブルにデータを追加
- 30. TYPO3リポジトリエクストラベースにデータを追加
ありがとうございます。 –
@Sanja Melnichuk:インデックスは、リスト内のアイテムの順序も制御するため、アイテム内の任意のデータを格納するために適切なインデックスではありません。名前には、名前にスペースを使用しない、同じ名前の複数の項目をサポートしないなど、いくつかの制限があります。 ListViewItemからクラスを派生させ、このアイテムのメンバーとしてデータを定義することを強くお勧めします。以下の私の答えを参照してください... – Ran