/// <summary> /// Konstruktor som tar emot värden för flightnummer och en FlightEventDelegate som /// kommer att anropas när användaren interagerar med fönstret. /// </summary> public FlightWindow(string flightNr, FlightEventDelegate flightEventDel) { this.flightNr = flightNr; this.flightEventDel = flightEventDel; InitializeComponent(); Title = "Flight " + flightNr; // Försök hämta bild för flygbolaget baserat på flightnumret. Bilder finns // inlagda i img/ -katalogen för flightnummer som börjar på dd, dy och su. if (flightNr.Length > 1) { string iataCode = flightNr.Substring(0, 2); try { logoImage.Source = new BitmapImage(new Uri(@"pack://application:,,,/" + Assembly.GetExecutingAssembly().GetName().Name + ";component/" + "img/" + iataCode + ".jpg", UriKind.Absolute)); } catch (Exception e) { // Bilden finns inte eller kunde inte läsas, gör inget. } } // Publicera att flyget är på väg till startbanan flightEventDel(new FlightEventArgs(flightNr, "Sent to runway")); }
/// <summary> /// Öppnar ett nytt fönster med en ny flight. /// </summary> private void Button_Click(object sender, RoutedEventArgs e) { if (flightNrEdit.Text.Length < 2) { MessageBox.Show("Ett flightnummer måste bestå av minst två tecken."); return; } // Dessa delegates kommer att anropas av flight - fönstret när användaren klickar // på Takeoff eller Landing, eller väljer en ny kurs i dropdownlistan. FlightEventDelegate controlTowerDel = OnFlightEvent; FlightEventDelegate counterDel = inAirCounter.OnFlightEvent; // Skapa ett nytt flightfönster och ange båda ovanstående delegates som mottagare // för händelser. FlightWindow flightWindow = new FlightWindow(flightNrEdit.Text, controlTowerDel + counterDel); flightWindow.Show(); }