Announcement

Collapse
No announcement yet.

countDown Daten von Form zu Klasse und dann zu Form?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • countDown Daten von Form zu Klasse und dann zu Form?

    Ich wolllte einfach mal so zum Spaß einen Countdown programmieren aber diesmal auch möglichst ordentlich.
    Leider bin ich aber auf ein Problem gestoßen.

    Ich wollte das so machen, das man in der Form sozusagen den Modus auswählen kann, also ob der Countdown eine gewissen Anzahl von sekunden, minuten und stunden einstellen kann oder auch eine Anzahl von Tagen, wie auch immer.
    Dabei soll die "Startform" sozusagen nur der Initialisierung dienen.
    Es soll zudem noch möglich sein, Grenzen einzustellen, also so eine Art wenn die Zeit ein Limit (oder mehrere) max. 3 erreicht hat, dann ändert sich die Farbe. Dies soll auch alles in der Startform einstellbar sein.

    Nun habe ich dann noch eine Form erstellt, wo dann sozusagen der Countdown dann letzendlich angezeigt wird und eine Klasse, die Initialize Countdown heißt.

    Jetzt müssen doch dann die ganzen Daten, an die Form und dann an die Klasse des Countdowns übergeben werden oder?
    Aber wie übergebe ich die Daten erst an eine Klasse und dann an eine Form und macht man das dann alles? mit Methodenparamtern?

    Dann muss ja auch bei jedem "Tick" des Timers die Zeit auf der anderen Form geändert werden, richtig?

  • #2
    Deine Klasse sollte den Timer (aus Forms, Threading, oder Timers) und alle Einstellungen enthalten und alles funktionelle erledigen. Die Form ist dann eine Möglichkeit, das Geschehen dem Anwender zu zeigen (die Klasse sollte genausogut als Backend für Qt, WCF, sonstiges UserInterface verwendbar sein).

    Die Klasse muss dem UI mitteilen, was geschieht. Dazu benutzt Du Events: http://msdn.microsoft.com/en-us/libr...v=VS.100).aspx

    Bsp:
    Code:
    public class MyClass
    {
        // private field to store a setting
        private System.Drawing.Color _alarmColour = System.Drawing.Color.Red;
    
        // public property to access the setting
        public System.Drawing.Color AlarmColour
        {
            get { return( _alarmColour ); }
            set { _alarmColour = value; }
        }
    
        // Event declaration
        public event EventHandler AlarmTriggered;
    
        private void WhateverRunsHere()
        // This is part of what is run by the timer.
        {
            // stuff
    
            EventHandler eh = AlarmTriggered;
            if( eh != null)
            {
                eh( this, new EventArgs());
            }
    
            // more stuff
        }
    }
    Die Form kann nun das AlarmTriggered event der Klasse abonnieren und darauf reagieren, z.B. indem es eine Farbe so ändert, wie das in der Klasse für AlarmColour vermerkt ist.
    Analog wird auch Text und alles andere kommuniziert, was ereignisgesteuert geändert werden soll.

    Comment

    Working...
    X