C # Windows Forms App: Trennen Sie die GUI von Business Logic

8

Ich hätte gerne einen Tipp, wie Sie die Benutzeroberfläche und die Geschäftslogik in einer einfachen C # Windows Forms-Anwendung trennen können.

Nehmen wir das Beispiel:

Die Benutzeroberfläche besteht aus einer einfachen Textbox und einer Schaltfläche. Der Benutzer gibt eine Zahl zwischen 0 und 9 ein und klickt auf die Schaltfläche. Das Programm sollte 10 zur Nummer hinzufügen und das Textfeld mit diesem Wert aktualisieren.

Der Teil der Geschäftslogik sollte keine Ahnung von der Benutzeroberfläche haben. Wie kann dies erreicht werden?

Hier ist die leere Prozessklasse (Geschäftslogik):

%Vor%

Die Voraussetzung ist:

  1. Wenn der Benutzer auf die Schaltfläche klickt, wird irgendwie die Process :: AddTen aufgerufen.
  2. Das Textfeld muss mit dem Rückgabewert von Process :: AddTen aktualisiert werden.

Ich weiß nur nicht, wie ich diese beiden verbinden soll.

    
Happy Go Lucky 18.07.2012, 17:54
quelle

3 Antworten

6

Zuerst müssen Sie Ihren Klassennamen ändern. " Prozess " ist der Name einer Klasse in der Klassenbibliothek und verursacht wahrscheinlich Verwirrung bei jedem, der Ihren Code liest.

Nehmen sie an, für den Rest dieser Antwort, die Sie die Klassennamen geändert MyProcessor (immer noch ein schlechter Ruf, aber nicht eine bekannte, häufig verwendete Klasse.)

Außerdem fehlt Ihnen der zu überprüfende Code, um sicherzustellen, dass es sich bei der Benutzereingabe tatsächlich um eine Zahl zwischen 0 und 9 handelt. Das ist im Code des Formulars und nicht im Klassencode angebracht.

  • Angenommen, die TextBox hat den Namen textBox1 (Der von VS generierte Standardwert für die erste dem Formular hinzugefügte TextBox)
  • Weiter vorausgesetzt, der Name der Schaltfläche ist button1

Doppelklicken Sie in Visual Studio auf die Schaltfläche, um den Ereignishandler für das Klicken auf die Schaltfläche zu erstellen, der folgendermaßen aussieht:

%Vor%

Fügen Sie im Ereignishandler Code hinzu, so dass er wie folgt aussieht:

%Vor%

Die Klasse sollte bei richtig eingestelltem Zugriffsmodifizierer wie folgt aussehen:

%Vor%     
David 18.07.2012, 17:58
quelle
2

Machen Sie Ihre 'Prozess' Klasse öffentlich (und wie @DavidStratton sagt, ändern Sie den Namen):

%Vor%

Ich würde sagen, dass Sie Ihren string Wert von TextBox.Text zu einem int analysieren sollten:

%Vor%     
Kevin Aenmey 18.07.2012 18:02
quelle
1

Sie können zum Beispiel eine andere Klasse namens "Process.cs" erstellen. Methoden, die eine Verarbeitung oder Datenberechnung beinhalten, bewegen Sie dorthin. In Ihrem Fall zum Beispiel:

%Vor%

Ihr Klickereignis auf der Benutzeroberfläche ruft Ihre "Prozessschicht" auf:

%Vor%

Auf diese Weise wird Ihre Geschäftslogik, wie z. B. das Berechnen, getrennt gehalten. Wenn sich Ihre Benutzeroberfläche ändert, können Sie einfach die Methode myProcess.AddTen () aufrufen, unabhängig davon, ob es sich um ein Web-, Windows- oder ein mobiles Formular handelt.

    
Shenaniganz 18.07.2012 18:03
quelle