2011-12-06 88 views
2
ProcessStartInfo startInfo = new ProcessStartInfo(); 

startInfo.CreateNoWindow = true; 
startInfo.UseShellExecute = false; 
startInfo.FileName = @".\ext.exe"; 
startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
int i=0; 
string item = listView1.Items[i++].Text; 
startInfo.Arguments = "--logfile=duration_output.txt " + (item); 

我想列出所有項目作爲string[],但然後應用程序給我一個空的日誌文件。
當我使用簡單的string item = listView1.Items[i++].Text時,它只給出一個輸出中的第一個文件。如何將所有項目從listview中獲取到字符串[]?

這怎麼可能呢?

回答

3

您正在尋找這樣的事情?

startInfo.Arguments = "--logfile=duration_output.txt " + 
    string.Join(" ", from item in listView1.Items.Cast<ListViewItem>() 
        select @"""" + item.Text + @"""" 
       ); 
+0

找不到源類型爲「System.Windows.Forms.ListView.ListViewItemCollection」的查詢模式的實現。 '選擇'未找到。考慮明確指定範圍變量'item'的類型。 – user830054

+0

好了,現在它正在工作,但只能識別前4項 – user830054

+0

@ user830054:那麼您的列表視圖中只能有4個項目。這是WinForms還是WPF? – user7116

2

您需要遍歷在列表視圖中的所有項目,並將它們連接成一個字符串:

string item = string.Empty; 
foreach (ListViewItem anItem in listView1.Items) 
{ 
    item += " " & anItem.Text; 
} 
+0

對象」不包含用於定義‘文本’和沒有擴展方法‘文本’接受類型的第一個參數‘對象’可以找到(你是否缺少using指令或程序集引用?) – user830054

0
StringBuilder args = new StringBuilder(); 
args.Append("--logfile=duration_output.txt"); 
foreach(var str in listView1.Items) 
{ 
    args.Append(" "); 
    args.Append(str); 
} 
2

試試這個:

string[] items = listView1.Items.Select(x => x.Text).ToArray(); 
+0

「沒有」選擇「方法。」 – user830054

+1

你需要確保你有'使用System.Linq ;''在你的班級頂部 – ilivewithian

+0

是的,我有它,但不工作 - 我不知道爲什麼 – user830054

-1

//這裏是你可以直接使用在System.Diagnostics程序 越來越//它的工作原理只是什麼都流類更換Console.WriteLine正在使用。 //替換其中我用的ListView迭代System.Diagnostics程序通列表視圖ITESM

System.Diagnostics.Process[] proc = System.Diagnostics.Process.GetProcesses(); 
    foreach(Process theprocess in proc) 
    { 
     Console.WriteLine("Process: {0} ID: {1}", theprocess.ProcessName, theprocess.Id); 
    } 
相關問題