2017-03-23 12 views
0

C#フォームのListViewに画像を追加するにはどうすればよいですか?
私のプログラムは、ディレクトリのすべてのサブフォルダを取得し、その名前をListViewに表示することができます。
しかし、各リストビューアイテムにフォルダアイコンを追加するのに問題があります。
これは私がこれまで試したていないコードです: フォーム - ListViewのすべてのアイテムに画像を追加

string storedir = 
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + 
"\\myfolder"; 

ImageList imgl = new ImageList(); 
//Get the folder icon from resources 
imgl.Images.Add(Properties.Resources.folder); 

DirectoryInfo dir = new DirectoryInfo(storedir); 
foreach (DirectoryInfo getdirs in dir.GetDirectories("*.*")) { 
    ListViewItem lItem = listView1.Items.Add(getdirs.Name, imgl.Images.Count - 1); 
} 


ませ成功をカントー:

Screenshot

誰も私を助けることができますか?

編集:

これで動作します。 @Gusmanと@LarsTechに感謝します! フォームにImageListコントロールを追加し、 "imgl"という名前を付けました。それから私は、ListViewコントロールの上に小とLargeImageListとして設定し、最終的に私はImageList imgl = new ImageList();

ありがとう取り外し!

+1

:あなたのイメージリストでは0等、このような何か(最後のインデックスを指定することで、リスト内の最後の画像にアクセスする必要はありません)を1秒を最初の画像を意味し、 'imgl.Images.Count'は' imgl.Images.Count - 1'を使用します – Gusman

+1

ListViewコントロールは、LargeImageListとSmallImageListの各プロパティを使ってイメージリストを参照する必要があります。 – LarsTech

+0

私は " - 1"を追加しましたが、それだけでは何も変更されず(ポストも更新されました)、@ LarsTechの両方のオプションは、LargeとSmallImageListによって何も選択できなくなりました。単に「(none)」と表示されます。 –

答えて

1

ラースはコメントで言ったように、あなたは、そのイメージリスト

の参照にLargeImageListプロパティを設定し、このように画像リストを割り当てることがあります。次の

listView1.LargeImageList = imgl; 

、あなたは0ベースのインデックスを追加する必要がありますあなたのイメージの。画像のインデックスは0に基づいて、その代わりにする必要があります

foreach (DirectoryInfo getdirs in dir.GetDirectories("*.*")) { 
    ListViewItem lItem = listView1.Items.Add(getdirs.Name, 0); 
関連する問題