Laden...

Button aus einer Hilfsklasse auslösen

Erstellt von wasloss vor 8 Jahren Letzter Beitrag vor 8 Jahren 764 Views
W
wasloss Themenstarter:in
2 Beiträge seit 2015
vor 8 Jahren
Button aus einer Hilfsklasse auslösen

Hallo zusammen,
vorab ich bin ein Neuling in C# und beschäftige mich mit dem Programmieren auch noch nicht zu lange 😉

Ich arbeite an einer kleinen Windows Forms Anwendung, leider stehe ich an einen Punkt an dem ich nicht mehr weiter komme. Die GUI soll alle Buttons im Ablauf einer Funktion sperren und nach Ablauf wieder freigeben. Die Logik befindet sich in einer Hilfsklasse, hier musste ich auf die Funktion in der Form zugreifen und eine Funktion disableButtons() auslösen. Nach etwas Recherche im Forum weiß ich schon mal, dass ich mit den Delegates und EventHandlern arbeiten muss. Leider komme ich mit der Implementierung anhand der Beispiele nicht klar, könnt mir jemand bitte auf den Sprung helfen. Das Ganze sieht in verkürzter Fassung so aus:



public Helper ()
{
   public void function()
   {
		 try
		{
			disableButtons();
		}
		catch 
		{
			enableButtons();
		}

		finally
		{
		   enableButtons();
		}
   }
}

public class Form1 : Form
{
	 public void disableButtons(code);
	 public void enableButtons(code);
}

Ich bedanke mich herzlich für Eure Unterstützung!

VG wasloss

B
357 Beiträge seit 2010
vor 8 Jahren

Du könntest auch eine Referenz in die Hilfsklasse reichen und mit einer relativ einfachen Anweisung die Buttons an- oder abschalten:

foreach (Control c in Controls)
{
    if (c.GetType() == typeof (Button))
    {
        ((Button) c).Enabled = false;
    }
}
5.657 Beiträge seit 2006
vor 8 Jahren

Hi wasloss,

Nach etwas Recherche im Forum weiß ich schon mal, dass ich mit den Delegates und EventHandlern arbeiten muss. Leider komme ich mit der Implementierung anhand der Beispiele nicht klar, könnt mir jemand bitte auf den Sprung helfen.

Hast du schonmal einen Blick in Erstellen von Ereignishandlern in Windows Forms geworfen? Dort sollte alles Wissenswerte beschrieben sein.

Ansonsten ist try/catch/finally für die Behandlung von Exceptions gedacht, nicht jedoch für die Anwendungslogik. In deinem Fall sollten vor dem Aufruf der eigentlichen Funktion die Buttons gesperrt, die Funktion dann in einem Backgroundworker ausgeführt (damit die Benutzeroberfläche weiterhin auf Benutzereingaben reagieren kann), und nach dem Beenden über das BackgroundWorker.RunWorkerCompleted-Ereignis die Buttons wieder aktiviert werden.

Christian

Weeks of programming can save you hours of planning

W
wasloss Themenstarter:in
2 Beiträge seit 2015
vor 8 Jahren

Hallo zusammen,

@bredator versuche es so.

@MrSparkle, danke schön für den Tipp, das ändere ich noch ab.

VG wasloss