2017-10-18 31 views
2

Ich schreibe eine einfache Taskliste Anwendung als Übung in Windows Forms und C#, die beide sehr neu sind. Ich verwende den folgenden Code, um zu versuchen, die Prozess-IDs in einer ListView anzuzeigen (die ich in der Entwurfsansicht in Visual Studio erstellt habe), aber wenn ich sie ausführe, werden die Elemente nicht angezeigt.C# Elemente erscheinen nicht in ListView

[STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     var currentWindow = new taskMngrWndw(); 
     Application.Run(currentWindow); 
     Process[] processList = Process.GetProcesses(); 
     foreach (Process proc in processList) 
     { 
      string processID = Convert.ToString(proc.Id); 
      currentWindow.taskView.Items.Add(new ListViewItem(processID)); 
     } 
     currentWindow.taskView.Refresh(); 
    } 

Was mache ich falsch?

+0

haben Sie es verfolgt? Warum ist der Prozesslistenabschnitt in diesem Bereich? – BugFinder

+0

@BugFinder wie ich schon sagte, ich bin wirklich, wirklich grün hinter den Ohren, also bin ich mir nicht sicher welche Spur bedeutet und ich dachte, das wäre der beste Platz dafür - sollte es stattdessen in der .cs-Datei sein? –

+0

Legen Sie Ihre ListView View-Eigenschaft auf "Details" fest – LocEngineer

Antwort

2

Das Problem ist, dass diese Zeile nicht zurück, bis das Hauptformular geschlossen ist (dh die App verlässt):

Application.Run(currentWindow); 

So ist der Code, um die Listenansicht zu füllen nur läuft, nachdem der das Formular entlassen und geschlossen. Verschieben Sie stattdessen diesen Code in das Formular, z. B. in das Formular Load Ereignis:

private void taskMngrWndw_Load(object sender, EventArgs e) 
{ 
    FillProcesses(); 
} 

private void FillProcesses() 
{ 
    Process[] processList = Process.GetProcesses(); 
    foreach (Process proc in processList) 
    { 
     string processID = Convert.ToString(proc.Id); 
     taskView.Items.Add(new ListViewItem(processID)); 
    } 
}