Entwickler-Ecke

Basistechnologien - Programmliste ausführen - Wo ist der Fehler?


Goordon - Mi 28.01.09 23:44
Titel: Programmliste ausführen - Wo ist der Fehler?
Guten Abend

Ich habe ein problem mit folgender Methode:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
        void ReadAndRun()
        {
            FileInfo file = new FileInfo("run.ini");
            StreamReader stRead = file.OpenText();
            while (!stRead.EndOfStream)
            {
                listBox1.Items.Add(stRead.ReadLine());
            }
            for (int i = 0; i < listBox1.Items.Count; i++)
            {
                System.Diagnostics.Process.Start(listBox1.Items[i]);
            }
        }


Folgendes problem ergibt sich: ( Ich möchte eine Liste von Programmen aus der "run.ini" ausführen )

Fehler 1 Die beste Übereinstimmung für die überladene System.Diagnostics.Process.Start(System.Diagnostics.ProcessStartInfo)-Methode hat einige ungültige Argumente.

Fehler 2 1-Argument: kann nicht von "object" in "System.Diagnostics.ProcessStartInfo" konvertiert werden.

Hat jemand eine idee?


Moderiert von user profile iconChristian S.: Topic aus WinForms verschoben am Mi 28.01.2009 um 22:47


Christian S. - Mi 28.01.09 23:48

Die Items einer ListBox sind vom Typ Object, es gibt aber keine Process.Start-Methode, welche einen solchen Parameter nimmt.


danielf - Do 29.01.09 10:45

Hallo,

was Christian meinst ist, dass du nicht listBox1.Items[i] der Start-Methode übergeben kannst, sondern einen String. In deinem Fall wäre das dann listBox1.Items[i].Text.


C#
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
            List<Process> processList = new List<Process>();

            foreach (ListViewItem lvi in this.listCommands.Items)
            {
                Process p = new Process();
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.FileName = lvi.Text;

                try
                {
                    p.Start();
                    processList.Add(p);
                }
                catch (Exception exception)
                {
                    MessageBox.Show(exception.Message);
                }
            }


Moderiert von user profile iconKha: Code- durch C#-Tags ersetzt


Kha - Do 29.01.09 13:29

user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
was Christian meinst ist, dass du nicht listBox1.Items[i] der Start-Methode übergeben kannst, sondern einen String. In deinem Fall wäre das dann listBox1.Items[i].Text.
System.Object besitzt keine Text-Property; dein Beispiel benutzt eine ListView. Benötigt wird also ein Cast von Object auf String.