2012-07-20 106 views
0

我想逐行讀取文件線,完美的作品,但我想單獨的結果我到在ListView子項目的項目。ListView控件添加具有子項目

我也是在文件夾中搜索所有.jar文件,所以我可以使用那些正如其名字(第一列)。第二列需要有「版本」,第三列是「作者」,第四列是「描述」。

這裏的文本文件,我從jar文件中獲得的一個:

name: AFK 
main: com.github.alesvojta.AFK.AFK 
version: 2.0.5 
author: Ales Vojta/schneckk 
description: Provides AFK messages 
website: http://dev.bukkit.org/server-mods/afk/ 

commands: 
    afk: 
     description: Provides AFK message when player types /afk. 
     usage: /<command> 

這是代碼我現在所擁有的:

private List<string> GetInstalledPlugins() 
    { 
     List<string> list = new List<string>(); 
     lvInstalledPlugins.Items.Clear(); 
     if (!Directory.Exists(Environment.CurrentDirectory + "\\plugins")) 
     { 
      Directory.CreateDirectory(Environment.CurrentDirectory + "\\plugins"); 
      DirectoryInfo di = new DirectoryInfo(Environment.CurrentDirectory + "\\plugins"); 
      FileInfo[] fileInfo = di.GetFiles("*.jar"); 
      foreach (var info in fileInfo) 
      { 
       //lvInstalledPlugins.Items.Add(info.Name); 
       list.Add(info.Name); 
      } 
     } 
     else 
     { 
      DirectoryInfo di = new DirectoryInfo(Environment.CurrentDirectory + "\\plugins"); 
      FileInfo[] fileInfo = di.GetFiles("*.jar"); 
      foreach (var info in fileInfo) 
      { 
       //lvInstalledPlugins.Items.Add(info.Name); 
       list.Add(info.Name); 
      } 
     } 
     return list; 
    } 

private void test(IEnumerable<string> list) 
    { 
     List<ListViewItem> PluginList = new List<ListViewItem>(); 
     var items = new string[4]; 
     try 
     { 
      foreach (var ListItem in list) 
      { 
       Console.WriteLine(ListItem); 
       var name = Environment.CurrentDirectory + "\\plugins\\" + ListItem; 
       var zip = new ZipInputStream(File.OpenRead(name)); 
       var filestream = new FileStream(name, FileMode.Open, FileAccess.Read); 
       var zipfile = new ZipFile(filestream); 
       ZipEntry item; 
       while ((item = zip.GetNextEntry()) != null) 
       { 
        if (item.Name == "plugin.yml") 
        { 
         using (var s = new StreamReader(zipfile.GetInputStream(item))) 
         { 
          string line; 
          while ((line = s.ReadLine()) != null) 
          { 
           if (line.Contains("name")) 
           { 
            items[0] = line; 
           } 
           if (line.Contains("version")) 
           { 
            items[1] = line; 
           } 
           if (line.Contains("author")) 
           { 
            items[2] = line; 
           } 
           if (line.Contains("description")) 
           { 
            items[3] = line; 
           } 
           try 
           { 
            var lvitem = new ListViewItem(items); 
            lvitem.Name = items[0]; 
            lvitem.Text = items[0]; 
            lvitem.SubItems.Add(items[1]); 
            lvitem.SubItems.Add(items[2]); 
            lvitem.SubItems.Add(items[3]); 
            PluginList.Add(lvitem); 
           } 
           catch (Exception) 
           { 

           } 
          } 
          lvInstalledPlugins.Items.AddRange(PluginList.ToArray()); 
         } 
        } 
       } 
      } 

這似乎並沒有工作:/ , 有任何想法嗎?我一直在做這個了整整一天,似乎無法得到它的工作:(。

回答

0

不完全相信你的問題,但標題會,回答這個問題下面可以提供一些援助。

C# listView, how do I add items to columns 2, 3 and 4 etc?

+0

好了,問題是,有時我有空分項目,並希望把「無數據......」在那裏,但是當我嘗試,Visual Studio中告訴我,子項是出範圍之類的東西。 – 2012-07-20 11:22:53