Hoe alle items in een string [] van listview te krijgen?

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);

Ik probeer alle items weer te geven als een tekenreeks [] , maar de toepassing geeft me een leeg logbestand.
Wanneer ik de eenvoudige string item = listView1.Items [i ++]. Text gebruik, krijg ik slechts één het eerste bestand op de uitvoer.

Hoe is het mogelijk om dat te doen?

2

5 antwoord

Ben je op zoek naar zoiets?

startInfo.Arguments = "--logfile=duration_output.txt " +
    string.Join(" ", from item in listView1.Items.Cast()
                     select @"""" + item.Text + @""""
               );
3
toegevoegd
@ user830054: dan moet je alleen 4 items in je lijstweergave hebben. Is dit WinForms of WPF?
toegevoegd de auteur user7116, de bron
Kon geen implementatie van het querypatroon vinden voor brontype 'System.Windows.Forms.ListView.ListViewItemCollection'. 'Selecteer' niet gevonden. Overweeg expliciet het type van de bereikvariabele 'item' te specificeren.
toegevoegd de auteur user830054, de bron
Ok nu, het werkt, maar herkent alleen de eerste 4 items
toegevoegd de auteur user830054, de bron
WinForms en wanneer ik 20-30 items selecteer 4, wanneer minder niets selecteert, geeft me alleen een lege txt.
toegevoegd de auteur user830054, de bron
Oké, ik weet waarom slechts een paar items herkent: wanneer een bestand of pad een spatie in de naam heeft slaat het over.
toegevoegd de auteur user830054, de bron
Nu werkt het !!!! Bedankt en bedankt aan iedereen die me probeerde te helpen! : D
toegevoegd de auteur user830054, de bron
:( Nee, het werkt niet goed. Wanneer ik meer dan 300 bestanden gebruik, herkent het ze niet allemaal
toegevoegd de auteur user830054, de bron

Probeer dit:

string[] items = listView1.Items.Select(x => x.Text).ToArray();
2
toegevoegd
U moet ervoor zorgen dat u gebruikt met System.Linq; bovenaan uw klas.
toegevoegd de auteur ilivewithian, de bron
@ user830054: Het heeft het niet omdat ListViewItemCollection implementeert IEnumerable niet .
toegevoegd de auteur user7116, de bron
"Er is geen" Select "-methode."
toegevoegd de auteur user830054, de bron
Ja ik heb het, maar werkt niet - ik weet niet waarom.
toegevoegd de auteur user830054, de bron
Ik bedoel, ik heb System.Linq aan het begin toegevoegd
toegevoegd de auteur user830054, de bron

U moet alle items in de lijstweergave herhalen en ze samenvoegen tot één enkele tekenreeks:

string item = string.Empty;
foreach (ListViewItem anItem in listView1.Items)
{
  item += " " & anItem.Text;
}
2
toegevoegd
object 'bevat geen definitie voor' Tekst 'en er is geen extensiemethode' Tekst 'die een eerste argument van het type' object 'accepteert. (mist u een gebruikende instructie of een assemblyverwijzing?)
toegevoegd de auteur user830054, de bron

// hier is iets dat u kunt gebruiken om direct bij System.Diagnostics te komen // het werkt gewoon Console.WriteLine vervangen door wat ooit Stream Class je gebruikt. // Vervangen waar ik System.Diagnostics gebruik met ListView Iterate via de listview itesm

    System.Diagnostics.Process[] proc = System.Diagnostics.Process.GetProcesses();
    foreach(Process theprocess in proc)
    {
      Console.WriteLine("Process: {0} ID: {1}", theprocess.ProcessName, theprocess.Id);
    }
1
toegevoegd
StringBuilder args = new StringBuilder();
args.Append("--logfile=duration_output.txt");
foreach( var str in listView1.Items )
{
    args.Append( " " );
    args.Append( str );
}
0
toegevoegd