2015-11-08 100 views
1

所以我想要做的是加載一個.txt文件,一旦加載.txt文件,它將顯示列表視圖中的.txt文件的內容。C#加載.txt文件並顯示在列表視圖

這是我的加載代碼。

 List<String> proxies = new List<string>(); 
    private void loadProxiesToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     loadProxies(); 
    } 

    private void loadProxies() 
    { 
     this.Invoke(new MethodInvoker(delegate 
     { 
      OpenFileDialog ofd = new OpenFileDialog(); 
      ofd.Filter = "TXT files|*.txt"; 
      ofd.Title = "Load Proxies"; 
      var dialogResult = ofd.ShowDialog(); 
      if (dialogResult == DialogResult.OK) 
      { 
       proxies = new List<string>(); 
       Parallel.ForEach(System.IO.File.ReadLines(ofd.FileName), (line, _, lineNumber) => 
       { 
        if (line.Contains(":")) 
        { 
         //loadedCombo.Add(line); 
         proxies.Add(line); 
        } 
        else 
        { 
         //MessageBox.Show("Hmm, thats not a combolist - please try again"); 
        } 
       }); 
      } 

      txt_proxies.Text = "Proxies Loaded: " + proxies.Count.ToString(); 

     })); 
    } 

我想讓它顯示在名爲「proxyView」的listView中。

所以我想說的是,我可以加載.txt並更改計數,但不會將.txt文件中的內容添加到列表視圖中。

非常感謝。

+0

哪裏代碼項目加入'ListView'? –

+0

是的,這是我無法得到的,我該怎麼做? – JohnDueDueDue

+0

你爲什麼使用'this.Invoke'?爲什麼你使用'Parallel.ForEach'? –

回答

3

要將項目添加到ListView你可以使用yourListView.Items.Add(text)

例如:

private void loadProxies() 
{ 
    OpenFileDialog ofd = new OpenFileDialog(); 
    ofd.Filter = "TXT files|*.txt"; 
    ofd.Title = "Load Proxies"; 
    var dialogResult = ofd.ShowDialog(); 
    if (dialogResult == DialogResult.OK) 
    { 
     foreach (var line in System.IO.File.ReadLines(ofd.FileName)) 
     { 
      if (line.Contains(":")) 
       proxyView.Items.Add(line); 
     } 
    } 
} 
+0

根據註釋,似乎您不需要使用'Invoke',因爲您不是在與UI線程不同的線程中使用該方法,而且您似乎也不需要使用' Parallel.For' –

+0

得到這個錯誤錯誤名稱'文件'在當前上下文中不存在 – JohnDueDueDue

+0

使用System.IO添加''或者乾脆使用'System.IO.File.ReadLines(ofd.FileName)'查看更新 –

相關問題