[c#] Listview Steuerelement an Objekt übergeben

Magic1416

Lieutenant
Registriert
Dez. 2003
Beiträge
513
Hallo zusammen,

Ich habe eine Klasse KillTask programmiert, die es mir ermöglicht, sämtliche Tasks incl. Taskeigenschaften auf einem Remotehost in einem Objekt abzuspeichern.

Ausgeführt wird das ganze mit einer Methode Button_Click. Hier ein kleiner Ausschnitt:
Code:
private void button_refresh_Click(object sender, System.EventArgs e)
		{
			
			//Clear Listview
			listView_tasks.Items.Clear();
			
			//Connecting with Userdata
			ConnectionOptions oConn = new ConnectionOptions();
			oConn.Username = textBox_User.Text;
			oConn.Password = textBox_PW.Text;

			//Connecting with Userdata to Machine
			ManagementScope oMs = new ManagementScope ("\\\\" + check_Client_Name(@textBox_Client.Text) + "\\root\\cimv2", oConn); 
		
			//Connecting to WMI Processes on Machine
			KillTask Tasks = new KillTask(oMs);
Nun kommt das eigentliche Problem:
Ich habe innerhalb der Button Click Methode eine foreach Schleife erstellt, um das Ergebnis von Killtask in einem ListView Steuerelement darzustellen.
Code:
foreach( ManagementObject oReturn in Tasks.show_Tasks() )
			{
				//Name of process
				ListViewItem item = new ListViewItem (oReturn["Name"].ToString().ToLower());
				listView_tasks.Items.Add (item);
Das selbe setzt sich fort, für die PID, Speicher, CPU Zeit und Prozess Priotität. Insgesamt habe ich eine gute Monitorseite an Code in der Methode Button Click, nur um die Prozesse und Informationen in dem Listview darzustellen. Außerdem hab ich ein Problem mit dem Errorhandling, wenn ein Rechner nicht online ist. Ich kann das zwar in der Klasse lösen, müsste es aber in der Methode Button Click noch einmal machen.

Ich möchte nun das Listview gleich an das Objekt Killtask übergeben und dieses dann innerhalb des Objekts befüllen lassen. Allerdings weiss ich nicht wie ich das Steuerelement an das Objekt übergebe.
Ich habe mir gedacht, dass vielleicht sowas funktionieren könnte. Habs allerdings noch nicht ausprobiert:
Code:
listview li = new listview;
li.name = listView_tasks;

li übergebe ich dann an Killtask.

Ich könnte dann eine Menge Code in die Klasse schieben, hätte es leichter mit dem Errorhandling und wahre so das Prinzip der Kapselung.

Vielen Dank für Eure Hilfe
 
Inzwischen habe ich es selbst rausgefunden.
Ist sehr einfach gewesen.

Code:
KillTask Task = new KillTask(Listview_List, Host); //Das Listview Steuerelement Listview_List übergeben
Hier ein Teil des Konstruktors der Klasse KillTask
Code:
class KillTask
{
private Listview li; //Variable vom Typ Listview erzeugen.
private string host;


public KillTask (Listview Li, string Host)
{
li = Li; //Listview li mit übergebenen Listview initialisieren
host = Host;
} 
public  void showTasks();
{
...
li.Items.Add(Item); //Listview befüllen
...
}
}

Gruß Magic
 
Zurück
Oben