Technische Universität München GUI- Entwicklung I: Windows Forms Proseminar Objektorientiertes Programmieren mit.net und C# Institut für Informatik Software & Systems Engineering
Agenda Einführung in Windows Forms WinForms-Projekte im Visual Studio Beispielanwendung: Studentenverwaltung Steuerelemente Container und Layouts Ereignisse und EventHandler Dialoge und ihre Results Schluss: Zusammenfassung Zukunftssicherheit 2
Einführung GUI = Graphical User Interface Windows Forms: Einfache Gestaltung von Oberflächen für Windows Anwendungen Assembly: System.Windows.Forms.dll Mit.NET 1.0 eingeführt Seit.NET 3.0 neues GUI-Framework: Windows Presentation Foundation 3
Einführung: Visual Studio <Footer> 4
Einführung: Visual Studio Erleichterungen: Interne Code-Generierung u.a. Anordnung und Aussehen von Steuerelementen Erzeugung von Methoden und Deklarationen partial Klassen und Code-Trennung Form.cs (Anwendungscode) Form.Designer.cs (Designercode) Programmablauf Program.cs [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } #region Vom Windows Form Designer generierter Code static void InitializeComponent() { // Form1 this.name = Form1 ; this.text = Form1 ; this.clientsize = new System.Drawing.Size(500, 300);... } #endregion 5
Studentenverwaltung: Idee Implementieren Sie ein System, das das Verwalten von TUM Studenten und Ihren Attributen, sowie einem aktuellen Status, in einer Liste ermöglicht. Es soll möglich sein, diese Liste zu Speichern und zu Laden. * * Mögliche Aufgabenstellung in 95% aller Grundstudiums-Veranstaltungen 6
Steuerelemente TextBox [,.Name,.Text,.ReadOnly,.Enabled,.Multiline ] Label [,.Font,.ForeColor,.BackColor, ] DateTimePicker [,.Format,.Value : DateTime, ] NumericUpDown [,.Maximum,.Minimum,.DezimalPlaces,.Increment ] 7
Steuerelemente RadioButton / CheckBox [,.Checked,.Enabled ] PictureBox [,.Image, ] ListBox [,.Items : Collection,.Sorted, ] ProgressBar [,.Minimum,.Maximum,.Step, ] Methode:.PerformStep() Button [,.Visible,.Size,.Location, ] 8
Anchor Eigenschaft aller Controls: Abstände zu übergeordnetem Control verankern 9
Dock Eigenschaft aller Controls: An Grenzen des übergeordneten Elements andocken 10
Container Panels [,.BorderStyle, ], kein.text GroupBox [,.Text : Überschrift, ] SplitContainer [,.Panel1,.Panel2,.Orientation ] 11
Erweiterte Container: Layouts FlowLayoutPanel Ordnet Elemente in horizontaler oder vertikaler Flussrichtung [,.FlowDirection,.WrapContents,.Controls ] 12
Erweiterte Container: Layouts TableLayoutPanel Ordnet Elemente in einer Tabelle [,.SetCellPosition(),.GetControlFromPosition(),.RowCount,.ColumnCount,.GrowStyle ] Hinzufügen von Reihen/Spalten zur Laufzeit: Row/ColumnCount++ Beachte Je nach GrowStyle wächst Spalte/Zeile automatisch mit! 13
Ereignisse und EventHandler Windows Forms Anwendungen sind event-driven Erzeugen eines EventHandlers per IDE: Gewünschtes Steuerelement auswählen Im Eigenschaft-Fenster den Blitz anklicken ( Ereignisse ) Namen der neuen Methode in passende Zeile eingeben Methode wird erzeugt, Rumpf kann implementiert werden à erzeugter Code in Form1.Designer.cs this.addbutton.click += new System.EventHandler(this.addButton_Click); à erzeugter Code in Form1.cs private void addbutton_click(object sender, EventArgs e) { } 14
Dialoge und ihre Results Viele vorgefertigte Dialoge in der Toolbox: Drucken (mit Vorschau), Farbauswahl, Fontauswahl uvm. Für StudentenVerwaltungs- Tool wichtig: MessageBox.Show(+20 Überladungen) u.a. (Text, Überschrift, MessageBoxButtons, MessageBoxIcon, ) SaveFileDialog / OpenFileDialog.ShowDialog() [,.Filter,.InitialDirectory,.FileName, ] DialogResult: Rückgabewert für alle Show()/-Dialog() - Methoden [,.OK,.No,.Yes,.Cancel, ] 15
Dialoge und ihre Results: Beispiele MessageBox.Show("Hier steht der Text", "Überschrift", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Information, MessageBoxDefaultButton.Button3, MessageBoxOptions.RightAlign); 16
Dialoge und ihre Results: Beispiele OpenFileDialog ofd = new OpenFileDialog(); ofd.filter = "Textdokument *.txt XML- Dokument *.xml"; ofd.initialdirectory = "c:\\"; if (ofd.showdialog() == DialogResult.OK) { string dateipfad = ofd.filename; // Datei wird geöffnet... } 17
Die fertige Anwendung: StudentenVerwaltung 18
Zusammenfassung What You See Is What You Get Erleichterungen und Automatisierungen à Sehr einfach und intuitiv und somit schnelles Erstellen von grafischen Schnittstellen für Windows Anwendungen Für dieses Einsatzgebiet vollständig und relativ mächtig ABER: Keine Weiterentwicklungen von Microsoft-Seite Neue Art der GUI-Entwicklung durch WPF Im Vergleich mächtiger und dynamischer à Zukunft der professionellen GUI- Entwicklung liegt in der Hand von WPF 19
Fragen und Diskussion und gerne auch die Präsentation der fertigen Anwendung Vielen Dank für die Aufmerksamkeit! 20
Backup: Drawing Assembly: System.Drawing.dll [,.Graphics,.Color,.Font,.Point,.Size,.Image, ] Verwendung in vielen WinForms- Komponenten Zum zeichnen: Graphics mygraphics; mygraphics.draw[.] (Image, Arc, Rectangle, Line, Ellipse, String uvm.) Zum Drucken: System.Drawing.Printing [,.PrintDocument,.PrintRange,.PrintEventHandler (object sender, PrintEventArgs ev), ] 21
Backup: DataGridView zeigt Daten in einer dynamischen Tabelle an [,.Item (Int32, Int32),.DefaultCellStyle,.DataSource ] 22