Einstieg in C# mit Visual Studio 2017 – Ideal für

Werbung
Wissen, wie’s geht.
Leseprobe
Wenn Sie auf schnelle und praktische Weise lernen möchten, wie
Sie Windows-Programme mit C# entwickeln, sind Sie hier genau
richtig. Dieser Buchauszug zeigt, wie Sie Visual Studio installieren
und für Ihre Projekte einrichten. Außerdem machen Sie sich mit
Variablen und Operatoren vertraut.
»Visual Studio 2017 installieren«
»Variablen, Operatoren, Steuerelemente«
»Lösungen der Übungsaufgaben«
Inhaltsverzeichnis
Index
Der Autor
Leseprobe weiterempfehlen
Thomas Theis
Einstieg in C# mit Visual Studio 2017 –
Ideal für Programmiereinsteiger
549 Seiten, broschiert, 5. Auflage 2017
29,90 Euro, ISBN 978-3-8362-4493-0
www.rheinwerk-verlag.de/4351
Kapitel 1
Einführung
1
In diesem Kapitel erlernen Sie anhand eines ersten Projekts den Umgang
mit der Entwicklungsumgebung und den Steuerelementen. Anschließend
werden Sie in der Lage sein, Ihr erstes eigenes Windows-Programm zu
erstellen.
C# ist eine objektorientierte Programmiersprache, die von Microsoft im
Zusammenhang mit dem .NET Framework eingeführt wurde. Mithilfe der
Entwicklungsumgebung Visual Studio 2017 können Sie u. a in der Sprache
C# programmieren. Visual Studio 2017 ist der Nachfolger von Visual Studio
2015. Innerhalb von Visual Studio stehen Ihnen noch weitere Sprachen zur
Programmentwicklung zur Verfügung.
C#
1.1 Aufbau dieses Buchs
Dieses Buch vermittelt Ihnen zunächst einen einfachen Einstieg in die Programmierung mit C# und Visual Studio 2017. Die Bearbeitung der Beispiele
und das selbstständige Lösen der vorliegenden Übungsaufgaben helfen dabei. Dadurch werden Sie schnell erste Erfolgserlebnisse haben, die Sie zum
Weitermachen motivieren. In späteren Kapiteln werden Ihnen anschließend auch komplexere Themen vermittelt.
Beispiele
Von Anfang an wird mit anschaulichen Windows-Anwendungen gearbeitet. Die Grundlagen der Programmiersprache und die Standardelemente
einer Windows-Anwendung, wie Sie sie bereits von anderen Windows-Programmen her kennen, werden gemeinsam vermittelt. Die Anschaulichkeit
einer Windows-Anwendung hilft dabei, den eher theoretischen Hintergrund der Programmiersprache leichter zu verstehen.
Grundlagen
15
1
1.4
Einführung
Visual Studio-Entwicklungsumgebung
1.2 Visual Studio 2017
Community-Version
Für dieses Buch wird die frei verfügbare Entwicklungsumgebung Visual
Studio Community 2017 eingesetzt. Sie können sie unter Windows 7 bis einschließlich Windows 10 nutzen. Diese Version von Visual Studio können
Sie bei Microsoft herunterladen (www.visualstudio.com/de-de) und auf Ihrem PC installieren. Eine Installationsanleitung finden Sie im Anhang. Die
Projekte in diesem Buch wurden unter Windows 10 bearbeitet. Auch die
Screenshots sind unter dieser Windows-Version entstanden.
Visual Studio 2017 bietet eine komfortable Entwicklungsumgebung. Sie
umfasst einen Editor zur Erstellung des Programmcodes, einen Compiler
zur Erstellung der ausführbaren Programme, einen Debugger zur Fehlersuche und vieles mehr.
Noch eine Anmerkung in eigener Sache: Für die Hilfe bei der Erstellung dieses Buchs bedanke ich mich beim Team des Rheinwerk Verlags, besonders
bei Anne Scheibe.
Thomas Theis
1.3 Mein erstes Windows-Programm
Anhand eines ersten Projekts werden Sie nun die verschiedenen Schritte
durchlaufen, die zur Erstellung eines einfachen Programms mit C# in Visual Studio notwendig sind. Das Programm soll nach dem Aufruf zunächst so
aussehen wie in Abbildung 1.1 gezeigt.
1
Abbildung 1.2 Nach einem Klick auf den Button »Hallo«
1.4 Visual Studio-Entwicklungsumgebung
Während der Projekterstellung werden Sie die Visual Studio-Entwicklungsumgebung Schritt für Schritt kennenlernen.
1.4.1 Ein neues Projekt
Nach dem Aufruf des Programms Visual Studio Community 2017 müssen
Sie zur Erstellung eines neuen C#-Projekts den Menüpunkt Datei • Neu •
Projekt ausführen. Anschließend wählen Sie in der Kategorie Installiert • Vorlagen • Visual C# die Vorlage Windows Forms-App aus. Als
Projektname bietet die Entwicklungsumgebung den Namen WindowsFormsApp1 an, dieser sollte geändert werden, zum Beispiel in MeinErstes.
Nach Betätigung der Schaltfläche OK erscheinen nun einige Elemente der
Entwicklungsumgebung. Folgende sind besonders wichtig:
왘 Das Benutzerformular (engl. Form) enthält die Oberfläche für den Benutzer des Programms (siehe Abbildung 1.3).
Form
Abbildung 1.1 Erstes Programm nach dem Aufruf
Abbildung 1.3 Benutzerformular
Nach Betätigung des Buttons Hallo soll sich der Text in der obersten Zeile
entsprechend verändern (siehe Abbildung 1.2).
16
왘 Der Werkzeugkasten (engl. Toolbox) enthält die Steuerelemente für
den Benutzer, mit denen er den Ablauf des Programms steuern kann. Sie
Toolbox
17
1
1.4
Einführung
Visual Studio-Entwicklungsumgebung
werden vom Programmentwickler in das Formular eingefügt (siehe Abbildung 1.4). Sollten in der Toolbox keine Steuerelemente angezeigt werden, klicken Sie einmal auf das Benutzerformular und anschließend wieder auf die Toolbox. Weitere Registerkarten, zum Beispiel ServerExplorer und Datenquellen, werden nicht benötigt und können jeweils über das Kreuz oben rechts ausgeblendet werden.
1
Abbildung 1.6 Projektmappen-Explorer
Abbildung 1.4 Der »Werkzeugkasten« mit verschiedenen
Kategorien von Steuerelementen
EigenschaftenFenster
왘 Das Eigenschaften-Fenster (engl. Properties Window) dient dem Anzeigen und Ändern der Eigenschaften von Steuerelementen innerhalb
des Formulars durch den Programmentwickler (siehe Abbildung 1.5). Ich
empfehle Ihnen, sich die Eigenschaften in alphabetischer Reihenfolge
anzeigen zu lassen. Betätigen Sie dazu einfach unter Form1 das zweite
Symbol von links.
Sollte der Werkzeugkasten, das Eigenschaften-Fenster oder der Projektmappen-Explorer nicht angezeigt werden, können Sie das betreffende Element über das Menü Ansicht einblenden. Ist das Formular nicht
sichtbar, blenden Sie es einfach über einen Doppelklick auf den Namen
(Form1.cs) im Projektmappen-Explorer ein. Sollten die Eigenschaften
eines Steuerelements nicht im bereits sichtbaren Eigenschaften-Fenster
angezeigt werden, markieren Sie zunächst den Namen der Formulardatei
(Form1.cs) im Projektmappen-Explorer und anschließend das betreffende Steuerelement.
Elemente anzeigen
Anfangs schreiben Sie nur einfache Programme mit wenigen Elementen,
daher benötigen Sie den Projektmappen-Explorer jetzt noch nicht. Es
empfiehlt sich, das Eigenschaften-Fenster nach oben zu vergrößern.
1.4.2 Einfügen von Steuerelementen
Abbildung 1.5 Eigenschaften-Fenster
ProjektmappenExplorer
18
왘 Der Projektmappen-Explorer (engl. Solution Explorer) zeigt das geöffnete Projekt und die darin vorhandenen Elemente (siehe Abbildung 1.6).
Zunächst sollen drei Steuerelemente in das Formular eingefügt werden:
ein Bezeichnungsfeld (Label) und zwei Befehlsschaltflächen (Buttons). Ein
Bezeichnungsfeld dient im Allgemeinen dazu, feste oder veränderliche
Texte auf der Benutzeroberfläche anzuzeigen. In diesem Programm soll
das Label einen Text anzeigen. Ein Button dient zum Starten bestimmter
Programmteile oder, allgemeiner ausgedrückt, zum Auslösen von Ereignissen. In diesem Programm sollen die Buttons dazu dienen, den Text anzuzeigen bzw. das Programm zu beenden.
Label, Button
Um ein Steuerelement einzufügen, ziehen Sie es mithilfe der Maus aus
dem Werkzeugkasten an die gewünschte Stelle im Formular. Alle Steuerelemente finden sich im Werkzeugkasten unter Alle Windows Forms.
Allgemeine
Steuerelemente
19
1
1.4
Einführung
Übersichtlicher ist jedoch der Zugriff über Allgemeine Steuerelemente
(engl. Common Controls), siehe Abbildung 1.7.
Visual Studio-Entwicklungsumgebung
fangsbuchstaben). Aus den Namen der Steuerelemente ergeben sich auch
die Namen der sogenannten Ereignisprozeduren, ebenfalls mit großem
Anfangsbuchstaben, siehe Abschnitt 1.4.5. Seit Visual Studio 2017 wird stärker auf die Einhaltung der Namenskonventionen geachtet.
Ein Button (eigentlich Command Button), der die Anzeige der Zeit auslösen
soll, wird beispielsweise mit CmdZeit bezeichnet. Weitere Vorsilben sind Txt
(Textfeld/TextBox), Lbl (Bezeichnungsfeld/Label), Opt (Optionsschaltfläche/RadioButton), Frm (Formular/Form) und Chk (Kontrollkästchen/
CheckBox).
Abbildung 1.7 »Allgemeine Steuerelemente« im »Werkzeugkasten«
Steuerelement
auswählen
Ein Doppelklick auf ein Steuerelement im Werkzeugkasten fügt es
ebenfalls in die Form ein. Position und Größe des Elements können anschließend noch verändert werden. Dazu wählen Sie das betreffende
Steuerelement vorher durch Anklicken aus (siehe Abbildung 1.8). Ein überflüssiges Steuerelement können Sie durch Auswählen und Drücken der
Taste (Entf) entfernen.
1
Cmd, Txt, Lbl, ...
Zur Änderung des Namens eines Steuerelements muss es zunächst ausgewählt werden. Das können Sie entweder durch Anklicken des Steuerelements auf dem Formular oder durch Auswahl desselben aus der Liste am
oberen Ende des Eigenschaften-Fensters tun.
Im Eigenschaften-Fenster werden alle Eigenschaften des ausgewählten
Steuerelements angezeigt. Die Liste ist zweispaltig: In der linken Spalte
steht der Name der Eigenschaft, in der rechten ihr aktueller Wert. Die Eigenschaft (Name) steht am Anfang der Liste der Eigenschaften. Die betreffende
Zeile wählen Sie durch Anklicken aus und geben hier den neuen Namen
ein. Nach Bestätigung mit der Taste (¢) ist die Eigenschaft geändert (siehe
Abbildung 1.9).
EigenschaftenFenster
Abbildung 1.8 Ausgewählter Button
Die Größe und andere Eigenschaften des Formulars selbst können Sie
ebenfalls verändern. Dazu wählen Sie es vorher durch Anklicken einer freien Stelle im Formular aus.
Abbildung 1.9 Button nach der Namensänderung
1.4.3 Arbeiten mit dem Eigenschaften-Fenster
Die eingefügten Steuerelemente haben zunächst einheitliche Namen und
Aufschriften, diese sollten Sie allerdings zur einfacheren Programmentwicklung ändern. Es gibt bestimmte Namenskonventionen, die die Lesbarkeit erleichtern: Die Namen beinhalten den Typ (mit drei Buchstaben
abgekürzt) und die Aufgabe des Steuerelements (jeweils mit großem An-
20
Die Aufschrift von Buttons, Labels und Formularen ist in der Eigenschaft
Text angegeben. Sobald diese Eigenschaft verändert wird, erscheint die veränderte Aufschrift in dem betreffenden Steuerelement. Auch der Name
und die Aufschrift des Formulars sollten geändert werden. Im Folgenden
sind die gewünschten Eigenschaften für die Steuerelemente dieses Programms in Tabellenform angegeben, siehe Tabelle 1.1.
Text
21
1
1.4
Einführung
Typ
Eigenschaft
Einstellung
Formular
Text
Mein erstes Programm
Button
Name
CmdHallo
Text
Hallo
Name
CmdEnde
Text
Ende
Name
LblAnzeige
Text
(leer)
BorderStyle
FixedSingle
Button
Label
Tabelle 1.1 Steuerelemente mit Eigenschaften
Startzustand
Hiermit legen Sie den Startzustand fest, also die Eigenschaften, welche die
Steuerelemente zu Beginn des Programms bzw. eventuell während des gesamten Programms haben sollen. Viele Eigenschaften können Sie auch
noch während der Laufzeit des Programms durch den Programmcode verändern.
Bei einem Label ergibt die Einstellung der Eigenschaft BorderStyle auf
FixedSingle einen Rahmen. Zur Änderung auf FixedSingle klappen Sie die
Liste bei der Eigenschaft auf und wählen den betreffenden Eintrag aus, siehe Abbildung 1.10. Zur Änderung einiger Eigenschaften müssen Sie gegebenenfalls ein Dialogfeld aufrufen.
Visual Studio-Entwicklungsumgebung
Im Label soll zunächst der Text (leer) erscheinen. Hierzu wählen Sie den
vorhandenen Text durch Anklicken aus und ändern ihn.
Sie finden alle in diesem Formular vorhandenen Steuerelemente in der Liste, die sich am oberen Ende des Eigenschaften-Fensters öffnen lässt.
Dabei zeigt sich ein Vorteil der einheitlichen Namensvergabe: Die Steuerelemente des gleichen Typs stehen immer direkt untereinander.
1
Liste der
Steuerelemente
1.4.4 Speichern eines Projekts
Die Daten eines C#-Projekts werden innerhalb von Visual Studio in verschiedenen Dateien gespeichert. Zum Speichern des gesamten Projekts
verwenden Sie den Menüpunkt Datei • Alles Speichern. Diesen Vorgang
sollten Sie in regelmäßigen Abständen durchführen, damit keine Änderungen verloren gehen können.
Alles speichern
Die in diesem Skript angegebenen Namen erleichtern eine schnelle und
eindeutige Orientierung und das spätere Auffinden von älteren Programmen.
1.4.5 Das Codefenster
Der Ablauf eines Windows-Programms wird im Wesentlichen durch das
Auslösen von Ereignissen durch den Benutzer gesteuert. Er löst z. B. die
Anzeige des Texts Hallo aus, indem er auf den Button Hallo klickt. Der
Entwickler muss dafür sorgen, dass aufgrund dieses Ereignisses auch tatsächlich der gewünschte Text angezeigt wird. Zu diesem Zweck schreibt er
Programmcode und ordnet diesen Code dem Ereignis zu. Der Code wird in
einer so genannten Ereignismethode abgelegt.
Ereignis
Zum Schreiben einer Ereignismethode führen Sie am besten einen Doppelklick auf dem betreffenden Steuerelement aus. Daraufhin erscheint das
Codefenster. Zwischen der Formularansicht und der Codeansicht können
Sie anschließend über die Menüpunkte Ansicht • Code bzw. Ansicht •
Designer hin- und herschalten. Das ist auch über die Registerkarten oberhalb des Formulars bzw. des Codefensters möglich (siehe Abbildung 1.11).
Ereignismethode
Abbildung 1.10 Label nach der Änderung von Name und BorderStyle
22
23
1
1.4
Einführung
Visual Studio-Entwicklungsumgebung
Zu den anderen Bestandteilen (die erst später für das eigene Programmieren wichtig werden):
Abbildung 1.11 Registerkarten
Nach erfolgtem Doppelklick auf den Button Hallo erscheinen im Codefenster die folgenden Einträge:
using System;
using System.Windows.Forms;
namespace MeinErstes
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void CmdHallo_Click(object sender, EventArgs e)
{
}
}
}
Listing 1.1 Projekt »MeinErstes«, Button »Hallo«, ohne Code
Zur Erläuterung:
왘 Grundsätzlich gilt, dass Sie sich nicht von der Vielzahl der automatisch
erzeugten Zeilen und den noch unbekannten Inhalten abschrecken lassen sollten.
왘 Zunächst das Wichtigste: Innerhalb der geschweiften Klammern { } der
Ereignismethode CmdHallo_Click() wird später Ihr eigener Programmcode hinzugefügt.
24
1
왘 C# ist eine objektorientierte Sprache. Ein wichtiges Element objektorientierter Sprachen sind die so genannten Klassen. Klassen eröffnen weitere Programmiermöglichkeiten. Namensräume wiederum beinhalten
zusammengehörige Klassen.
Namensraum
왘 In obigem Listing können Sie erkennen, dass einige Programmzeilen,
die mit using beginnen, bereits entfernt wurden. Das Schlüsselwort
using dient zum Einbinden von Namensräumen in das aktuelle Projekt.
Da wir die Klassen in diesen Namensräumen nicht benötigen, wurden
die betreffenden Zeilen entfernt.
using
왘 Seit der Version 2015 von Visual Studio werden solche überflüssigen Elemente in grauer Schriftfarbe dargestellt. Falls sich der Cursor in einer der
betreffenden Zeilen befindet, erscheint links von der Zeile eine gelbe
Glühbirne. Platzieren Sie den Mauszeiger über dieser Glühbirne, können
Sie sich Hinweise dazu anzeigen lassen, wie die überflüssigen Elemente
ganz entfernt werden können.
왘 Oberhalb von public partial class ... und von private void ... erscheinen außerdem seit Visual Studio 2015 automatisch weitere Informationen zur Klasse Form1 und ihren Elementen in kleiner grauer Schrift, wie
zum Beispiel 0 references oder 3 references. Auch diese können wir zunächst noch ignorieren.
namespace
왘 Dieses erste Projekt verfügt über einen eigenen Namensraum (engl.
namespace), daher namespace MeinErstes.
왘 Alle Elemente des aktuellen Formulars Form1 stehen innerhalb der
öffentlich zugänglichen Klasse Form1, daher public class Form1. Ein Teil
der Elemente steht in dieser Datei, ein anderer Teil, der ebenfalls automatisch erzeugt wurde, steht in einer anderen, hier nicht sichtbaren
Datei, daher der Zusatz partial (dt. teilweise).
public partial class
왘 Die Methode InitializeComponent() beinhaltet Programmzeilen, die das
Aussehen und Verhalten der Steuerelemente des Programms bestimmen.
왘 Der Zusatz private bedeutet, dass die Ereignismethode CmdHalloClick()
nur in dieser Klasse bekannt ist. Mit void wird gekennzeichnet, dass diese Methode lediglich etwas ausführt, aber kein Ergebnis zurückliefert.
private void
25
1
1.4
Einführung
Click
왘 Auf weitere Einzelheiten dieser automatisch erzeugten Bestandteile
wird zu einem späteren Zeitpunkt eingegangen, da es hier noch nicht
notwendig ist und eher verwirren würde.
kette Hallo wird der Eigenschaft Text des Steuerelements LblAnzeige mittels folgender Schreibweise Steuerelement.Eigenschaft = Wert zugewiesen.
Das führt zur Anzeige des Werts.
Der anfänglich ausgeführte Doppelklick führt immer zu dem Ereignis, das
am häufigsten mit dem betreffenden Steuerelement verbunden wird.
Nach dem Wechsel auf die Formularansicht können Sie das nächste Steuerelement auswählen, für das eine Ereignismethode geschrieben werden soll.
Das ist beim Button natürlich das Ereignis Click. Zu einem Steuerelement
gibt es aber auch noch andere mögliche Ereignisse.
Innerhalb des Codefensters kann Text mit den gängigen Methoden der
Textverarbeitung editiert, kopiert, verschoben und gelöscht werden.
Bei den nachfolgenden Programmen werden nicht mehr alle Teile des Programmcodes im Buch abgebildet, sondern nur noch
In der Ereignismethode CmdEnde_Click() soll der folgende Code stehen:
왘 die Teile, die vom Entwickler per Codeeingabe erzeugt werden,
왘 und die Teile des automatisch erzeugten Codes, die wichtig für das allgemeine Verständnis sind.
Den vollständigen Programmcode können Sie aber jederzeit betrachten,
wenn Sie die Beispielprojekte laden bzw. ausprobieren.
1.4.6 Schreiben von Programmcode
In der Methode CmdHallo_Click() soll eine Befehlszeile eingefügt werden,
sodass sie anschließend wie folgt aussieht:
private void CmdHallo_Click(object sender, EventArgs e)
{
LblAnzeige.Text = "Hallo";
}
Listing 1.2 Projekt »MeinErstes«, Button »Hallo«, mit Code
Der Text muss in Anführungszeichen gesetzt werden, da C# sonst annimmt, dass es sich um eine Variable mit dem Namen Hallo handelt.
Anweisung
Zuweisung
26
Visual Studio-Entwicklungsumgebung
Der Inhalt einer Methode setzt sich aus einzelnen Anweisungen zusammen, die nacheinander ausgeführt werden. Die vorliegende Methode enthält nur eine Anweisung; in ihr wird mithilfe des Gleichheitszeichens eine
Zuweisung durchgeführt.
Bei einer Zuweisung wird der Ausdruck rechts vom Gleichheitszeichen
ausgewertet und der Variablen, der Objekteigenschaft oder der Steuerelementeigenschaft links vom Gleichheitszeichen zugewiesen. Die Zeichen-
1
Code editieren
private void CmdEnde_Click(object sender, EventArgs e)
{
Close();
}
Listing 1.3 Projekt »MeinErstes«, Button »Ende«
Die Methode Close() dient dem Schließen eines Formulars. Da es sich um
das einzige Formular dieses Projekts handelt, wird dadurch das Programm
beendet und die gesamte Windows-Anwendung geschlossen.
Close()
Dies waren einige Beispiele zur Änderung der Eigenschaften eines Steuerelements zur Laufzeit des Programms durch Programmcode. Sie erinnern
sich: Zu Beginn hatten wir bereits die Starteigenschaften der Steuerelemente im Eigenschaften-Fenster eingestellt.
1.4.7 Kommentare
Bei längeren Programmen mit vielen Anweisungen gehört es zum guten
Programmierstil, Kommentarzeilen zu schreiben. In diesen Zeilen werden
einzelne Anweisungen oder auch längere Blöcke von Anweisungen erläutert, damit Sie selbst oder auch ein anderer Programmierer sie später
leichter nachvollziehen können. Alle Zeichen innerhalb eines Kommentars werden nicht übersetzt oder ausgeführt.
Ein Kommentar beginnt mit der Zeichenkombination /*, endet mit der Zeichenkombination */ und kann sich über mehrere Zeilen erstrecken.
/* Kommentar */
Eine andere Möglichkeit ergibt sich durch die Zeichenkombination //. Ein
solcher Kommentar erstreckt sich nur bis zum Ende der Zeile.
// Kommentar
27
1
1.4
Einführung
Der folgende Programmcode wird um einen Kommentar ergänzt:
private void CmdEnde_Click(object sender, EventArgs e)
{
/* Diese Anweisung beendet
das Programm */
Close();
}
Listing 1.4 Projekt »MeinErstes«, Button »Ende«, mit Kommentar
Code auskommentieren
Hier noch ein kleiner Trick: Sollen bestimmte Programmzeilen für einen
Test des Programms kurzfristig nicht ausgeführt werden, können Sie sie
auskommentieren, indem Sie die Zeichenkombination // vor die betreffenden Zeilen setzen. Das geht sehr schnell, indem Sie die betreffende(n)
Zeile(n) markieren und anschließend das entsprechende Symbol in der
Symbolleiste anklicken, siehe Abbildung 1.12. Rechts daneben befindet sich
das Symbol, welches die Auskommentierung nach dem Test wieder rückgängig macht.
Abbildung 1.12 Kommentar ein/aus
Visual Studio-Entwicklungsumgebung
Tritt während der Ausführung eines Programms ein Fehler auf, werden Sie
hierauf hingewiesen, und das Codefenster zeigt die entsprechende Ereignismethode sowie die fehlerhafte Zeile an. In diesem Fall beenden Sie das
Programm, korrigieren den Code und starten das Programm wieder.
Fehler
Es ist empfehlenswert, das Programm bereits während der Entwicklung
mehrmals durch einen Aufruf zu testen und nicht erst, wenn das Programm vollständig erstellt worden ist. Ein geeigneter Zeitpunkt dazu ergibt sich zum Beispiel
Programm testen
1
왘 nach dem Einfügen der Steuerelemente und dem Zuweisen der Eigenschaften, die Sie zu Programmbeginn benötigen, oder
왘 nach dem Erstellen jeder Ereignismethode.
1.4.9 Ausführbares Programm
Nach erfolgreichem Test des Programms können Sie die ausführbare Datei
(.exe-Datei) auch außerhalb der Entwicklungsumgebung aufrufen. Haben
Sie an den Grundeinstellungen nichts verändert und die vorgeschlagenen Namen verwendet, findet sich die zugehörige .exe-Datei des aktuellen
Projekts im Verzeichnis Dokumente\Visual Studio 2017\Projects\MeinErstes\MeinErstes\bin\Debug. Das Programm kann also ganz normal im Windows-Explorer direkt über Doppelklick gestartet werden.
.exe-Datei
Die Weitergabe eines eigenen Windows-Programms auf einen anderen PC
ist etwas aufwendiger. Dieser Vorgang wird im Anhang beschrieben.
1.4.8 Starten, Ausführen und Beenden des Programms
Programm starten
Programm beenden
28
Nach dem Einfügen der Steuerelemente und dem Erstellen der Ereignismethoden ist das Programm fertig und kann gestartet werden. Dazu
betätigen Sie den Start-Button in der Symbolleiste (dreieckiger grüner
Pfeil nach rechts). Alternativ starten Sie das Programm über die Funktionstaste (F5) oder den Menüpunkt Debuggen • Debugging Starten.
Das Formular erscheint, und das Betätigen der Buttons führt zum programmierten Ergebnis.
Zur regulären Beendigung eines Programms ist der Button mit der Aufschrift Ende vorgesehen. Möchten Sie ein Programm während des Verlaufs
vorzeitig abbrechen, können Sie auch den Ende-Button in der Symbolleiste
(rotes Quadrat) betätigen.
1.4.10 Schließen und Öffnen eines Projekts
Um ein Projekt zu schließen, wählen Sie den Menüpunkt Datei • Projektmappe schliessen. Falls Sie Veränderungen vorgenommen haben, werden Sie vorher gefragt, ob Sie diese Änderungen speichern möchten.
Projekt schließen
Wollen Sie die Projektdaten sicherheitshalber zwischendurch speichern, ist
das über den Menüpunkt Datei • Alles speichern möglich. Das ist bei
längeren Entwicklungsphasen sehr zu empfehlen.
Zum Öffnen eines vorhandenen Projekts wählen Sie den Menüpunkt
Datei • öffnen • Projekt. Im darauffolgenden Dialogfeld Projekt öffnen wählen Sie zunächst das gewünschte Projektverzeichnis aus und anschließend die gleichnamige Datei mit der Endung .sln.
Projekt öffnen
29
1
1.5
Einführung
Alle Beispielprojekte finden Sie auf www.rheinwerk-verlag.de/4351 unter
»Materialien zum Buch« zum Download. Sollte eines der Projekte einmal
nicht gestartet werden können, sollten Sie es über den Menüpunkt Erstellen • Projektmappe neu erstellen neu erstellen.
1.4.11 Übung
Übung UName
Erzeugen Sie ein Windows-Programm mit einem Formular, das zwei Buttons und ein Label beinhaltet (siehe Abbildung 1.13). Bei Betätigung des
ersten Buttons erscheint im Label Ihr Name. Bei Betätigung des zweiten
Buttons wird das Programm beendet. Namensvorschläge: Projektname
UName, Buttons CmdMeinName und CmdEnde, Label LblMeinName.
Arbeiten mit Steuerelementen
1.5 Arbeiten mit Steuerelementen
1
1.5.1 Steuerelemente formatieren
Zur besseren Anordnung der Steuerelemente auf dem Formular können
Sie sie mithilfe der Maus nach Augenmaß verschieben. Dabei erscheinen
automatisch Hilfslinien, falls das aktuelle Element horizontal oder vertikal
parallel zu einem anderen Element steht.
Hilfslinien
Weitere Möglichkeiten bieten die Menüpunkte im Menü Format. In vielen Fällen müssen vorher mehrere Steuerelemente auf einmal markiert
werden (siehe Abbildung 1.14).
Mehrere Steuerelemente markieren
Abbildung 1.13 Übung UName
Zeilenumbruch
1.4.12 Empfehlungen für Zeilenumbrüche
Abbildung 1.14 Mehrere markierte Elemente
Zeilenumbrüche erhöhen die Lesbarkeit des Programmcodes. Sie können
jedoch nicht an jeder Stelle innerhalb einer Anweisung durchgeführt werden. Nachfolgend werden einige Stellen empfohlen:
Das geschieht entweder
왘 nach einer öffnenden Klammer (wie bereits gezeigt),
왘 vor einer schließenden Klammer,
왘 nach einem Komma,
왘 nach einem Operator und
30
왘 durch Umrahmung der Elemente mit einem Rechteck, nachdem Sie zuvor das Steuerelement Zeiger ausgewählt haben, oder
왘 durch Mehrfachauswahl, indem Sie ab dem zweiten auszuwählenden
Steuerelement die (ª)-Taste (wie für Großbuchstaben) oder die (Strg)Taste gedrückt halten.
왘 nach einem Punkt hinter einem Objektnamen.
Über das Menü Format haben Sie anschließend folgende Möglichkeiten
zur Anpassung der Steuerelemente:
Falls Sie einen Zeilenumbruch innerhalb einer Zeichenkette durchführen,
werden seit Visual Studio 2017 zur Fehlervermeidung beide Teile der Zeichenkette automatisch durch Anführungszeichen begrenzt und durch den
Verkettungsoperator + (siehe Abschnitt 2.2.4) miteinander verbunden.
왘 Die ausgewählten Steuerelemente können horizontal oder vertikal zueinander ausgerichtet werden (Menü Format • Ausrichten).
Menü »Format«
왘 Auch die horizontalen und/oder vertikalen Dimensionen der ausgewählten Steuerelemente können angeglichen werden (Menü Format •
Grösse angleichen).
31
1
1.5
Einführung
Einheitliche
Abstände
Arbeiten mit Steuerelementen
왘 Zudem können die horizontalen und vertikalen Abstände zwischen den
ausgewählten Steuerelementen angeglichen, vergrößert, verkleinert
oder entfernt werden (Menü Format • Horizontaler Abstand/Vertikaler Abstand).
왘 über das Menü Bearbeiten • Kopieren und das Menü Bearbeiten •
Einfügen oder
왘 Die Steuerelemente können außerdem horizontal oder vertikal innerhalb des Formulars zentriert werden (Menü Format • auf Formular
zentrieren).
Anschließend sollten Sie die neu erzeugten Steuerelemente direkt umbenennen und an den gewünschten Positionen anordnen.
왘 Sollten sich die Steuerelemente teilweise überlappen, können Sie einzelne Steuerelemente in den Vorder- bzw. Hintergrund schieben (Menü
Format • Reihenfolge).
왘 Sie können alle Steuerelemente gleichzeitig gegen versehentliches Verschieben absichern (Menü Format • Steuerelemente Sperren). Diese
Sperrung gilt nur während der Entwicklung des Programms.
Abbildung 1.15 zeigt ein Formular mit drei Buttons, die alle linksbündig ausgerichtet sind und den gleichen vertikalen Abstand voneinander haben.
Übung
Laden Sie das Projekt MeinErstes aus Abschnitt 1.3, markieren Sie darin
mehrere Steuerelemente, und testen Sie anschließend die einzelnen Möglichkeiten des Format-Menüs aus.
1
왘 mit den Tastenkombinationen (Strg) + (C) und (Strg) + (V).
Übung
Laden Sie das Projekt MeinErstes aus Abschnitt 1.3 und kopieren Sie einzelne Steuerelemente. Kontrollieren Sie anschließend die Liste der vorhandenen Steuerelemente im Eigenschaften-Fenster auf eine einheitliche
Namensgebung.
1.5.3 Eigenschaften zur Laufzeit ändern
Steuerelemente haben die Eigenschaften Size (mit den Komponenten
Width und Height) und Location (mit den Komponenten X und Y) zur Angabe von Größe und Position. X und Y geben die Koordinaten der oberen linken Ecke des Steuerelements an, gemessen von der oberen linken Ecke des
umgebenden Elements (meist das Formular). Sämtliche Werte werden in
Pixeln angegeben.
Size, Location
Alle diese Eigenschaften können sowohl während der Entwicklungszeit als
auch während der Laufzeit eines Projekts verändert werden. Zur Änderung
während der Entwicklungszeit können Sie die Eigenschaftswerte wie gewohnt im Eigenschaften-Fenster eingeben. Als Beispiel für Änderungen
während der Laufzeit soll hingegen das folgende Programm (Projekt
Steuerelemente) dienen (siehe Abbildung 1.16).
Abbildung 1.15 Nach der Formatierung
1.5.2 Steuerelemente kopieren
Steuerelemente
kopieren
32
Zur schnelleren Erzeugung eines Projekts können vorhandene Steuerelemente einschließlich aller ihrer Eigenschaften kopiert werden. Markieren
Sie hierzu die gewünschten Steuerelemente, und kopieren Sie sie entweder
Abbildung 1.16 Position und Größe bestimmen
33
1
1.5
Einführung
Zunächst ein Hinweis zu den benötigten Namensräumen, die oberhalb der
Klasse eingebunden werden:
using System;
using System.Drawing;
using System.Windows.Forms;
...
Listing 1.5 Projekt »Steuerelemente«, Namensräume
Arbeiten mit Steuerelementen
Zur Erläuterung:
왘 Der Kopfteil der einzelnen Methoden wird aus Gründen der Übersichtlichkeit jeweils in verkürzter Form abgebildet. Das wird bei den meisten
nachfolgenden Beispielen ebenfalls so sein, außer wenn es genau auf die
Inhalte des Methodenkopfs ankommt.
1
Verkürzte
Darstellung
왘 Das Formular enthält fünf Buttons. Die oberen vier Buttons dienen der
Veränderung von Position und Größe des fünften Buttons.
wing hinzugekommen, der beim Zugriff auf Positions-, Größen- oder Farb-
왘 Die Position eines Elements kann relativ zur aktuellen Position oder auf
absolute Werte eingestellt werden. Das Gleiche gilt für die Größe eines
Elements.
angaben benötigt wird. Die drei genannten Namensräume reichen bei vielen Projekten aus.
왘 Bei beiden Angaben handelt es sich um Wertepaare (X/Y bzw. Breite/
Höhe).
Es wird nachfolgend generell nur der Teil des Programmcodes angezeigt,
der verändert wurde:
왘 Zur Einstellung der Position dient die Struktur Point. Ein Objekt dieser
Struktur liefert ein Wertepaar. In diesem Programm wird mit new jeweils
ein neues Objekt der Struktur Point erzeugt, um das Wertepaar bereitzustellen.
new Point
왘 Bei Betätigung des Buttons Position Abs wird die Position des fünften
Buttons auf die Werte X=100 und Y=200 gestellt, jeweils gemessen von der
linken oberen Ecke des Formulars.
X, Y
Gegenüber dem vorherigen Projekt ist noch der Namensraum System.Dra-
private void CmdPositionRel_Click(...)
{
CmdTest.Location = new Point(
CmdTest.Location.X + 20, CmdTest.Location.Y);
}
private void CmdPositionAbs_Click(...)
{
CmdTest.Location = new Point(100, 200);
}
private void CmdGroesseRel_Click(...)
{
CmdTest.Size = new Size(
CmdTest.Size.Width + 20, CmdTest.Size.Height);
}
private void CmdGroesseAbs_Click(...)
{
CmdTest.Size = new Size(50, 100);
}
Listing 1.6 Projekt »Steuerelemente«
왘 Bei Betätigung des Buttons Position Rel wird die Position des fünften
Buttons auf die Werte X = CmdTest.Location.X + 20 und Y = CmdTest.Location.Y gestellt. Bei X wird also der alte Wert der Komponente X um 20 erhöht, das Element bewegt sich nach rechts. Bei Y wird der alte Wert der
Komponente Y nicht verändert, das Element bewegt sich somit nicht
nach oben oder unten.
왘 Zur Einstellung der Größe dient die Struktur Size.
Size
왘 Bei Betätigung des Buttons Grösse Abs wird die Größe des fünften Buttons auf die Werte Width = 50 und Height = 100 gestellt.
Width, Height
왘 Bei Betätigung des Buttons Grösse Rel wird die Größe des fünften
Buttons auf die Werte Width = CmdTest.Size.Width + 20 und Height = CmdTest.Size.Height gestellt. Bei Width wird also der alte Wert der Komponente Width um 20 erhöht, das Element wird breiter. Bei Height wird der
frühere Wert der Komponente Height nicht verändert, das Element verändert seine Höhe daher nicht.
Nach einigen Klicks sieht das Formular aus wie das in Abbildung 1.17.
34
35
1
1.5
Einführung
Arbeiten mit Steuerelementen
Falls Sie eine mehrzeilige Ausgabe wünschen, können Sie einen Zeilenvorschub mithilfe der Zeichenfolge "\n" (für new line) erzeugen.
\n
1
Nachfolgend wird das Formular des Projekts Steuerelemente vergrößert,
zum Beispiel auf 500 × 400. Anschließend wird es um ein Label ergänzt, in
dem die aktuelle Position und Größe des Buttons angezeigt werden. Das
soll nach Betätigung des Buttons Anzeige geschehen:
Abbildung 1.17 Veränderung von Eigenschaften zur Laufzeit
1.5.4 Vergabe und Verwendung von Namen
Beachten Sie in allen Programmen, dass jedes Steuerelement seinen eigenen, eindeutigen Namen hat und immer mit diesem Namen angesprochen
werden muss. Besonders am Anfang passiert es erfahrungsgemäß häufig,
dass ein Programm nur deshalb nicht zum gewünschten Erfolg führt, weil
ein nicht vorhandener Name verwendet wird. In diesem Zusammenhang
möchte ich noch einmal auf die Namenskonventionen hinweisen:
private void CmdAnzeige_Click(...)
{
LblAnzeige.Text = "Position: X: " + CmdTest.Location.X +
", Y: " + CmdTest.Location.Y + "\n" + "Größe: Breite: " +
CmdTest.Size.Width + ", Höhe: " + CmdTest.Size.Height;
}
Listing 1.7 Projekt »Steuerelemente«, mit Anzeige
Nach einigen Klicks und der Betätigung des Buttons Anzeige sieht das Formular aus wie das in Abbildung 1.18.
왘 Buttons sollten Namen wie z. B. CmdEnde, CmdAnzeigen, CmdBerechnen usw.
haben.
왘 Labels sollten Namen wie z. B. LblAnzeige, LblName, LblUhrzeit,
LblBeginnDatum haben.
Diese Namen liefern eine eindeutige Information über Typ und Funktion
des Steuerelements. Falls Sie beim Schreiben von Programmcode anschließend diese Namen z. B. vollständig in Kleinbuchstaben eingeben, werden
Sie nach Verlassen der Zeile darauf aufmerksam gemacht. Sie können so
schnell erkennen, ob Sie tatsächlich ein vorhandenes Steuerelement verwendet haben.
Abbildung 1.18 Anzeige der Eigenschaften
1.5.6 Eigenschaft BackColor, Farben allgemein
Die Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-
BackColor
Color festgelegt. Dabei können Sie die Farbe zur Entwicklungszeit leicht
mithilfe einer Farbpalette oder aus Systemfarben auswählen.
1.5.5 Verknüpfung von Texten, mehrzeilige Texte
+ zur Verkettung
36
Mithilfe des Zeichens + können mehrere Texte miteinander verknüpft werden. Falls ein einzelner Zahlenwert zwischen den Texten steht, wird er vorher in einen Text umgewandelt. Aufgepasst: Falls mehrere Zahlenwerte
direkt nacheinander mithilfe des Zeichens + verknüpft werden, werden sie
zunächst mathematisch addiert.
Hintergrundfarben und andere Farben können Sie auch zur Laufzeit einstellen. Dabei bedienen Sie sich der Farbwerte, die Sie über die Struktur Color auswählen.
Color
Ein Beispiel, ebenfalls im Projekt Steuerelemente:
37
1
Einführung
private void CmdFarbe_Click(...)
{
BackColor = Color.Yellow;
LblAnzeige.BackColor = Color.FromArgb(192, 255, 0);
}
Listing 1.8 Projekt »Steuerelemente«, mit Farben
Zur Erläuterung:
왘 Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften, z. B.
Yellow. Der Wert kann der Eigenschaft BackColor des Steuerelements zugewiesen werden, hier aber handelt es sich um das Formular selbst.
FromArgb()
왘 Außerdem bietet die Struktur die Methode FromArgb(). Diese können Sie
auf verschiedene Arten aufrufen. Eine dieser Arten erwartet genau drei
Parameter, nämlich die Werte für Rot, Grün und Blau jeweils zwischen 0
und 255.
Das Formular sieht nach der Änderung der Eigenschaft Farbe aus wie das in
Abbildung 1.19.
Abbildung 1.19 Nach Änderung der Eigenschaft »Farbe«
38
Kapitel 2
Grundlagen
2
In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrundlagen von C# in Verbindung mit den gängigen Steuerelementen von
Windows-Programmen.
In den folgenden Abschnitten lernen Sie wichtige Elemente der Programmierung, wie Variablen, Operatoren, Verzweigungen und Schleifen, gemeinsam mit wohlbekannten, häufig verwendeten Steuerelementen kennen.
2.1 Variablen und Datentypen
Variablen dienen der vorübergehenden Speicherung von Daten, die sich
während der Laufzeit eines Programms ändern können. Eine Variable besitzt einen eindeutigen Namen, unter dem sie angesprochen werden kann.
2.1.1 Namen, Werte
Für die Namen von Variablen gelten in C# die folgenden Regeln:
Namensregeln
왘 Sie beginnen mit einem Buchstaben.
왘 Sie können nur aus Buchstaben, Zahlen und einigen wenigen Sonderzeichen (wie z. B. dem Unterstrich _) bestehen.
왘 Sie dürfen Umlaute oder auch das scharfe ß enthalten. Allerdings kann
das zu Fehlern im Einsatz unter anderssprachigen Umgebungen führen.
Daher rate ich davon ab.
왘 Innerhalb eines Gültigkeitsbereichs darf es keine zwei Variablen mit
dem gleichen Namen geben (siehe Abschnitt 2.1.4).
Variablen erhalten ihre Werte durch Zuweisung per Gleichheitszeichen.
Falls eine Variable als Erstes auf der rechten Seite des Gleichheitszeichens
genutzt wird, muss ihr vorher ein Wert zugewiesen werden. Anderenfalls
wird ein Fehler gemeldet.
39
2
2.1
Grundlagen
2.1.2 Deklarationen
Neben dem Namen besitzt jede Variable einen Datentyp, der die Art der Information bestimmt, die gespeichert werden kann. Der Entwickler wählt
den Datentyp danach aus, ob er Texte, Zahlen ohne Nachkommastellen,
Zahlen mit Nachkommastellen oder z. B. logische Werte speichern möchte.
Auswahl des
Datentyps
Außerdem muss er sich noch Gedanken über die Größe des Bereichs machen, den die Zahl oder der Text annehmen könnte, und über die gewünschte Genauigkeit bei Zahlen. Im folgenden Abschnitt finden Sie eine
Liste der gängigsten Datentypen.
Variablen müssen in C# immer mit einem Datentyp deklariert werden. Das
beugt Fehlern vor, die aufgrund einer falschen Verwendung der Variablen
entstehen könnten.
2.1.3 Datentypen
Die wichtigsten von C# unterstützten Datentypen können in einige große
Gruppen unterteilt werden:
Es gibt Datentypen zur Speicherung von ganzen Zahlen:
왘 den Datentyp byte, mit Werten von 0 bis 255
왘 den Datentyp short, mit Werten von –32.768 bis 32.767
int
왘 den Datentyp int, mit Werten von –2.147.483.648 bis 2.147.483.647
왘 und den Datentyp long, mit Werten von –9.223.372.036.854.775.808 bis
9.223.372.036.854.775.807
Außerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkommastellen:
왘 den Datentyp float, mit einfacher Genauigkeit und Werten
von ca. –3,4×1038 bis ca. 3,4×1038
double
왘 den Datentyp double, mit doppelter Genauigkeit und Werten
von ca. –1,7×10308 bis ca. 1,7×10308
왘 und den Datentyp decimal, mit variabler Genauigkeit und Werten
von ca. –7,9×1028 bis ca. 7.9×1028
Einige weitere nützliche Datentypen sind:
왘 der Datentyp bool, mit den Werten true oder false (wahr oder falsch)
40
Variablen und Datentypen
왘 der Datentyp char, für einzelne Zeichen
왘 der Datentyp string, für Zeichenketten mit variabler Länge
string
2
Im folgenden Beispiel werden Variablen dieser Typen deklariert, mit Werten versehen und in einem Label angezeigt (Projekt Datentypen).
private void CmdAnzeige_Click(...)
{
/* Ganze Zahlen */
byte By;
short Sh;
int It, Hex;
long Lg;
/* Zahlen mit Nachkommastellen */
float Fl;
double Db1, Db2, Exp1, Exp2;
decimal De;
/* Boolesche Variable, Zeichen, Zeichenkette */
bool Bo;
char Ch;
string St;
/* Ganze Zahlen */
By = 200;
Sh = 30000;
It = 2000000000;
Lg = 3000000000;
Hex = 0x3a;
/* Zahlen mit Nachkommastellen */
Fl = 1.0f / 7;
Db1 = 1 / 7;
Db2 = 1.0 / 7;
De = 1.0m / 7;
Exp1 = 1.5e3;
Exp2 = 1.5e-3;
/* Boolesche Variable, Zeichen, Zeichenkette */
Bo = true;
41
2
2.1
Grundlagen
Ch = 'a';
St = "Zeichenkette";
LblAnzeige.Text =
"byte: " + By + "\n" + "short: " + Sh + "\n" +
"int: " + It + "\n" + "long: " + Lg + "\n" +
"(hexadezimale Zahl): " + Hex + "\n\n" +
"float: " + Fl + "\n" + "double 1: " + Db1 + "\n" +
"double 2: " + Db2 + "\n" + "decimal: " + De + "\n" +
"(Exponent positiv): " + Exp1 + "\n" +
"(Exponent negativ): " + Exp2 + "\n\n" +
"bool: " + Bo + "\n" +
"char: " + Ch + "\n" + "string: " + St;
}
Listing 2.1 Projekt »Datentypen«
Nach Betätigung des Buttons stellt das Programm die Ausgabe wie in Abbildung 2.1 dar.
Abbildung 2.1 Wichtige Datentypen
Zur Erläuterung:
Deklaration
42
왘 Variablen werden mithilfe der Anweisung <Datentyp> <Variablenname>;
deklariert. Mehrere Variablen desselben Datentyps können, durch
Kommata getrennt, innerhalb einer Anweisung deklariert werden (z. B.
int x, y;).
Variablen und Datentypen
왘 Variablen können bereits bei der Deklaration einen Wert erhalten, zum
Beispiel: short Sh = 30000;.
2
왘 Bei den Datentypen für ganze Zahlen führt die Zuweisung einer zu
großen Zahl zu einer Überschreitung des Wertebereichs und zu einer
Fehlermeldung.
Wertebereich
왘 Ganze Zahlen können auch in hexadezimaler Form zugewiesen werden,
mithilfe von 0x zu Beginn der Zahl, gefolgt von den hexadezimalen Ziffern. Diese gehen von 0 bis 9, es folgen a (= dezimal 10), b (=11), c (=12),
d (=13), e (=14) und f (=15). Ein Beispiel: 0x2f5 entspricht 2×162 + 15×161 +
5×160 = 512 + 240 + 5 = 757.
Hexadezimal
왘 Die Datentypen für Zahlen mit Nachkommastellen unterscheiden sich
in ihrer Genauigkeit. Nachkommastellen müssen im Programmcode
durch einen Dezimalpunkt abgetrennt werden. In der Ausgabe wird
dagegen ein Dezimalkomma dargestellt. Die Zuweisung einer zu großen
Zahl führt zu einer Fehlermeldung. Die Zuweisung einer zu kleinen Zahl
wiederum führt zur Anzeige von »Unendlich« (!) bzw. zu einer ungenauen Speicherung.
Zahlen mit Nachkommastellen
왘 Bei der Division von zwei ganzen Zahlen sollten Sie beachten, dass die
Nachkommastellen abgeschnitten werden. Möchten Sie das nicht, müssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastellen kennzeichnen, z. B. durch das Anhängen von .0: Statt 1 schreiben Sie
1.0.
Division
ganzer Zahlen
왘 float-Werte sollten mit einem f gekennzeichnet werden, decimal-Werte
mit einem m. Damit erhält die gesamte Division im vorliegenden Programm einen float- bzw. decimal-Wert.
Kürzel f und m
왘 Sehr große oder sehr kleine Zahlen können im Programmcode auch in
der Exponentialschreibweise zugewiesen werden. Zwei Beispiele: 1.5e3
für 1500.0 oder 1.5e-3 für 0.0015.
Exponentialschreibweise
왘 Werte für den Datentyp bool werden mit true und false zugewiesen,
aber mit True und False ausgegeben.
true, false
왘 Werte für Zeichen müssen in einfachen Anführungszeichen und für Zeichenketten in doppelten Anführungszeichen angegeben werden.
Anführungszeichen
왘 Die Datentypen int, double, bool und string werden am Häufigsten eingesetzt.
43
2
2.1
Grundlagen
Übung
Übung
UDatentypen
Schreiben Sie ein Programm, in welchem Ihre Adresse, Ihr Nach- und Vorname, Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps gespeichert und anschließend wie in Abbildung 2.2 ausgegeben werden.
Variablen und Datentypen
왘 Eine klassenweit gültige Variable wird innerhalb einer Methode von
einer lokalen Variablen mit dem gleichen Namen ausgeblendet.
Ausblenden
2
Im folgenden Beispiel werden Variablen unterschiedlicher Gültigkeitsbereiche deklariert, an verschiedenen Stellen verändert und ausgegeben (Projekt Gueltigkeitsbereich):
public partial class Form1 : Form
{
...
private int Mx = 0;
Abbildung 2.2 Übung UDatentypen
private void CmdAnzeigen1_Click(...)
{
int x = 0;
Mx = Mx + 1;
x = x + 1;
LblAnzeige.Text = "x: " + x + " Mx: " + Mx;
}
2.1.4 Gültigkeitsbereich
Lokal
Klassenweit gültig
private
public
Variablen, die innerhalb einer Methode vereinbart werden, haben ihre Gültigkeit nur in der Methode. Außerhalb der Methode sind sowohl Name als
auch Wert der Variable unbekannt. Solche Variablen bezeichnet man daher
auch als lokale Variablen. Sobald die Methode abgearbeitet wurde, steht
der Wert auch nicht mehr zur Verfügung. Beim nächsten Aufruf der gleichen Methode werden diese Variablen neu deklariert und erhalten neue
Werte.
Variablen, die außerhalb von Methoden vereinbart werden, sind innerhalb
der gesamten Klasse gültig, hier also innerhalb der Klasse des Formulars.
Ihr Wert kann in jeder Methode gesetzt oder abgerufen werden und bleibt
solange erhalten, wie das Formular im laufenden Programm existiert.
Diese klassenweit gültigen Variablen werden mit dem Schlüsselwort private deklariert. Weitere Einzelheiten zu klassenweit gültigen Variablen finden Sie in Abschnitt 5.2. Sie sind außerhalb der Klasse nicht gültig.
Variablen, die mit dem Schlüsselwort public vereinbart werden, sind öffentlich. Damit sind sie auch außerhalb der jeweiligen Klasse, also z. B. auch
in anderen Formularen gültig. Mehr dazu ebenfalls in Abschnitt 5.2.
private void CmdAnzeigen2_Click(...)
{
int Mx = 0;
Mx = Mx + 1;
LblAnzeige.Text = "Mx: " + Mx;
}
}
Listing 2.2 Projekt »Gueltigkeitsbereich«
Zur Erläuterung:
왘 In der ersten Methode wird der Wert der klassenweit gültigen Variablen
Mx bei jedem Aufruf erhöht. Die lokale Variable x wird immer wieder auf
1 gesetzt (siehe Abbildung 2.3).
Gibt es in einem Programmabschnitt mehrere Variablen mit dem gleichen
Namen, gelten die folgenden Regeln:
왘 Lokale Variablen mit gleichem Namen in der gleichen Methode sind
nicht zulässig.
44
Abbildung 2.3 Lokale und klassenweit gültige Variablen
45
2
2.1
Grundlagen
Variablen und Datentypen
왘 In der zweiten Methode blendet die lokale Variable Mx die gleichnamige
klassenweit gültige Variable aus. Die lokale Variable wird immer wieder
auf 1 gesetzt (siehe Abbildung 2.4).
2
Abbildung 2.6 Ausgabe der zweiten Methode nach weiteren Klicks
2.1.5 Konstanten
Abbildung 2.4 Lokale Variable
Startwert setzen
Hinweis: Die Variablen werden vor ihrer ersten Benutzung initialisiert,
d. h., sie werden mit einem Startwert besetzt.
Übung
Übung
UGueltigkeitsbereich
Erstellen Sie ein Programm, in dem zwei Buttons, ein Label und drei Variablen eines geeigneten Datentyps eingesetzt werden:
왘 die klassenweit gültige Variable x
왘 die Variable y, die nur lokal in der Methode zum Click-Ereignis des ersten Buttons gültig ist
Konstanten sind vordefinierte Werte, die während der Laufzeit nicht verändert werden können. Am besten geben Sie Konstanten aussagekräftige
Namen, damit sie leichter zu behalten sind als die Werte, die sie repräsentieren. Konstanten werden an einer zentralen Stelle definiert und können
an verschiedenen Stellen des Programms genutzt werden. Somit muss eine
eventuelle Änderung einer Konstanten zur Entwurfszeit nur an einer Stelle
erfolgen. Der Gültigkeitsbereich von Konstanten ist analog zum Gültigkeitsbereich von Variablen.
Konstanten repräsentieren Werte
Zu den Konstanten zählen auch die integrierten Konstanten. Auch sie repräsentieren Zahlen, die aber nicht so einprägsam sind wie die Namen der
Konstanten.
Integrierte
Konstanten
왘 die Variable z, die nur lokal in der Methode zum Click-Ereignis des zweiten Buttons gültig ist
Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt
(Projekt Konstanten):
In der ersten Methode werden x und y jeweils um 0,1 erhöht und angezeigt
(siehe Abbildung 2.5).
public partial class Form1 : Form
{
...
private const int MaxWert = 75;
private const string Eintrag = "Picture";
private void CmdKonstanten_Click(...)
{
const int MaxWert = 55;
const int MinWert = 5;
LblAnzeige.Text = (MaxWert - MinWert) / 2 + "\n" + Eintrag;
}
Abbildung 2.5 Ausgabe der ersten Methode nach einigen Klicks
In der zweiten Methode werden x und z jeweils um 0,1 erhöht und angezeigt (siehe Abbildung 2.6).
}
Listing 2.3 Projekt »Konstanten«, Teil 1
46
47
2
2.1
Grundlagen
Zur Erläuterung:
const
Variablen und Datentypen
private void CmdEnumeration1_Click(...)
{
LblAnzeige.Text = "Farbe: " + Farbe.Gelb +
" " + (int)Farbe.Gelb;
}
왘 Konstanten werden mithilfe des Schlüsselworts const definiert.
왘 Die Konstanten MaxWert und Eintrag werden mit klassenweiter Gültigkeit festgelegt.
왘 Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert
und MinWert festgelegt. MaxWert blendet die klassenweit gültige Konstante gleichen Namens aus, wie Sie in Abbildung 2.7 sehen können.
2
private void CmdEnumeration2_Click(...)
{
LblAnzeige.Text = "Sonntag: " + DayOfWeek.Sunday + " " +
(int)DayOfWeek.Sunday + "\n" + "Samstag: " +
DayOfWeek.Saturday + " " + (int)DayOfWeek.Saturday;
}
}
Listing 2.4 Projekt »Konstanten«, Teil 2
Abbildung 2.7 Konstanten
Zur Erläuterung:
2.1.6 Enumerationen
Konstanten
aufzählen
Enumerationen sind Aufzählungen von Konstanten, die thematisch zusammengehören. Alle Enumerationen haben den gleichen Datentyp, der
ganzzahlig sein muss. Bei der Deklaration werden ihnen Werte zugewiesen,
am besten explizit. Innerhalb von Visual Studio gibt es für C# zahlreiche
vordefinierte Enumerationen. Ähnlich wie bei den integrierten Konstanten sind die Namen der Enumerationen und deren Elemente besser lesbar
als die durch sie repräsentierten Zahlen.
Ein Beispiel: Die Enumeration DialogResult ermöglicht dem Programmierer, die zahlreichen möglichen Antworten des Benutzers beim Einsatz von
Windows-Standarddialogfeldern (Ja, Nein, Abbrechen, Wiederholen,
Ignorieren, ...) anschaulich einzusetzen.
왘 Es wird die Enumeration Farbe vom Datentyp int vereinbart. Da es sich
um einen Typ handelt und nicht um eine Variable oder Konstante, muss
sie außerhalb von Methoden vereinbart werden. Damit ist sie automatisch für die gesamte Klasse gültig.
Klassenweit gültig
왘 In der ersten Ereignismethode wird ein Element der eigenen Enumeration Farbe verwendet. Zunächst wird der Name des Elements ausgegeben: Gelb. Die Zahl, welche das Element repräsentiert, kann erst nach
einer Umwandlung in den entsprechenden Datentyp ausgegeben werden. Diese Umwandlung wird mithilfe eines Casts vorgenommen: (int)
(siehe Abbildung 2.8).
Cast (int)
Im folgenden Programm wird mit einer eigenen und einer vordefinierten
Enumeration gearbeitet (ebenfalls im Projekt Konstanten):
public partial class Form1 : Form
{
...
private enum Farbe : int
{
Rot = 1, Gelb = 2, Blau = 3
}
48
Abbildung 2.8 Erste Enumeration
왘 In der zweiten Ereignismethode werden zwei Elemente der vordefinierten Enumeration DayOfWeek verwendet, siehe Abbildung 2.9. Sie können
sie zur Ermittlung des Wochentags eines gegebenen Datums verwenden.
DayOfWeek
49
2
2.2
Grundlagen
Abbildung 2.9 Zweite Enumeration
2.2 Operatoren
Zum Zusammensetzen von Ausdrücken werden in C#, wie in jeder anderen
Programmiersprache auch, Operatoren verwendet. In diesem Buch wurden bereits die Operatoren = für Zuweisungen und + für Verkettungen genutzt.
Priorität
Es gibt verschiedene Kategorien von Operatoren. Vorrangregeln (Prioritäten) sind für die Reihenfolge der Abarbeitung zuständig, falls mehrere
Operatoren innerhalb eines Ausdrucks verwendet werden. Diese Vorrangregeln finden Sie weiter unten in diesem Abschnitt. Falls Sie sich bei der
Verwendung dieser Regeln nicht sicher sind, empfiehlt es sich, die Reihenfolge durch eigene Klammersetzung explizit festzulegen.
2.2.1 Rechenoperatoren
Rechenoperatoren
Rechenoperatoren dienen der Durchführung von Berechnungen, siehe Tabelle 2.1.
Operator
Beschreibung
+
Addition
-
Subtraktion oder Negation
*
Multiplikation
/
Division
%
Modulo
++
Erhöhung um 1
--
Verminderung um 1
Operatoren
Bei der Division von zwei ganzen Zahlen sollten Sie beachten, dass die
Nachkommastellen abgeschnitten werden. Wenn Sie das nicht möchten,
müssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastellen kennzeichnen, z. B. durch Anhängen von .0: Statt 5 schreiben Sie
also 5.0.
Ganzzahldivision
Der Modulo-Operator % berechnet den Rest einer Division. Einige Beispiele
sehen Sie in Tabelle 2.2.
Modulo
Ausdruck
Ergebnis
Erklärung
19% 4
3
19 durch 4 ist 4 Rest 3
19.5% 4.2
2.7
19,5 durch 4,2 ist 4 Rest 2,7
2
Tabelle 2.2 Modulo-Operator
Die Operatoren ++ und -- dienen als Schreibabkürzung und sollen mithilfe
des Projekts Rechenoperatoren erläutert werden:
++, --
private void CmdAnzeigen1_Click(...)
{
int x = 5;
x++;
++x;
x = x + 1;
LblAnzeige.Text = "Ergebnis: " + x;
}
private void CmdAnzeigen2_Click(...)
{
int x = 5;
LblAnzeige.Text = "Ergebnis: " + x++;
}
private void CmdAnzeigen3_Click(...)
{
int x = 5;
LblAnzeige.Text = "Ergebnis: " + ++x;
}
Listing 2.5 Projekt »Rechenoperatoren«
Tabelle 2.1 Rechenoperatoren
50
51
2
2.2
Grundlagen
x++
++x
x=x+1
Zur Erläuterung:
2.2.2 Vergleichsoperatoren
왘 In der ersten Methode hat x zunächst den Wert 5. Der Wert kann mit ++x
oder mit x++ oder mit x = x + 1 jeweils um 1 erhöht werden. Anschließend
hat x den Wert 8.
Vergleichsoperatoren (siehe Tabelle 2.3) dienen dazu, festzustellen, ob bestimmte Bedingungen zutreffen oder nicht. Das Ergebnis kann beispielsweise zur Ablaufsteuerung von Programmen genutzt werden. In Abschnitt
2.3 wird hierauf noch genauer eingegangen.
왘 In der zweiten Methode wird x zunächst ausgegeben und anschließend
um 1 erhöht. Das liegt daran, dass der Operator ++ hinter x steht. In der
Ausgabe sehen Sie noch den alten Wert 5, nach der Anweisungszeile
erhält x den Wert 6.
왘 In der dritten Methode wird x zunächst um 1 erhöht und anschließend
ausgegeben. In diesem Fall steht der Operator ++ vor x. In der Ausgabe
sehen Sie den neuen Wert 6, nach der Anweisungszeile behält x ebenfalls
den Wert 6.
왘 Die Schreibweise x = x + 1; als eigene Anweisungszeile schafft hier Klarheit.
왘 Für den Operator -- gilt sinngemäß das Gleiche.
Von links
nach rechts
Klammern
Projekt
Übung
URechenoperatoren
Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig
und werden von links nach rechts in der Reihenfolge ihres Auftretens ausgewertet. Dasselbe gilt für Additionen und Subtraktionen, wenn sie zusammen in einem Ausdruck auftreten. Multiplikation und Division werden dabei vor Addition und Subtraktion ausgeführt.
Mit Klammern kann diese Rangfolge jedoch außer Kraft gesetzt werden,
damit bestimmte Teilausdrücke vor anderen Teilausdrücken ausgewertet
werden. In Klammern gesetzte Operationen haben grundsätzlich immer
Vorrang. Innerhalb der Klammern gilt jedoch wieder die normale Rangfolge der Operatoren.
Beschreibung
<
kleiner als
<=
kleiner als oder gleich
>
größer als
>=
größer als oder gleich
==
gleich
!=
ungleich
Ausdruck
Ergebnis
5>3
true
3 == 3.2
false
5 + 3 * 2 >= 12
false
"Maier" == "Mayer"
false
2
Tabelle 2.4 Nutzung von Vergleichsoperatoren
Alle Vergleiche innerhalb dieses Abschnitts können Sie auch mithilfe des
Codes im Projekt Vergleichsoperatoren selber nachvollziehen.
Übung
Übung
Berechnen Sie die beiden folgenden Ausdrücke, speichern Sie das Ergebnis
in einer Variablen eines geeigneten Datentyps, und zeigen Sie es anschließend an:
Ermitteln Sie das Ergebnis der beiden folgenden Ausdrücke, speichern Sie
es in einer Variablen eines geeigneten Datentyps, und zeigen Sie es an:
왘 2. Ausdruck: 3 * (-2.5 + 4) * 2
Vergleich
Tabelle 2.3 Einige Beispiele sehen Sie in Tabelle 2.4.
Im Projekt Rechenoperatoren können Sie auch die beiden Berechnungen
mit dem Operator % leicht selber nachvollziehen.
왘 1. Ausdruck: 3 * –2.5 + 4 * 2
52
Operator
Operatoren
왘 1. Ausdruck: 12 – 3 >= 4 * 2.5
Projekt
Übung
UVergleichsoperatoren
왘 2. Ausdruck: "Maier" != "Mayer"
53
2
2.2
Grundlagen
2.2.3 Logische Operatoren
Logik
Logische Operatoren dienen dazu, mehrere Bedingungen zusammenzufassen. Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Programmen genutzt werden (siehe hierzu auch Abschnitt 2.3). Die logischen
Operatoren sehen Sie in Tabelle 2.5.
Operator
Beschreibung
Das Ergebnis ist true, wenn ...
!
Nicht
... der Ausdruck false ist.
&&
Und
... beide Ausdrücke true sind.
||
inklusives Oder
... mindestens ein Ausdruck true ist.
^
exklusives Oder
... genau ein Ausdruck true ist.
Tabelle 2.5 Logische Operatoren
! && || ^
Es seien die Variablen A = 1, B = 3 und C = 5 gesetzt. Die Ausdrücke in der ersten Spalte von Tabelle 2.6 ergeben jeweils die Ergebnisse in der zweiten
Spalte.
Ausdruck
Ergebnis
!(A < B)
false
(B > A) && (C > B)
true
(B < A) || (C < B)
false
(B < A) ^ (C > B)
true
Tabelle 2.6 Ausdrücke mit logischen Operatoren
Sie können auch die logischen bitweisen Operatoren & (statt &&) und | (statt
||) verwenden. Hierbei werden alle Teile des Vergleichsausdrucks ausgewertet. Im Gegensatz dazu wird bei den Operatoren && und || die Auswertung abgebrochen, sobald sich der Wert des Ausdrucks nicht mehr verändern kann. Die Ergebnisse unterscheiden sich allerdings nur, falls
innerhalb des Vergleichsausdrucks Werte verändert werden, z. B. mit den
Operatoren ++ oder --.
Operatoren
&, |
2
2.2.4 Verkettungsoperator
Der Operator + dient der Verkettung von Zeichenketten. Ist einer der Ausdrücke keine Zeichenfolge, sondern eine Zahl, wird er (wenn möglich) in
eine Zeichenfolge verwandelt. Das Gesamtergebnis ist wiederum eine Zeichenfolge. Beispiel:
Umwandlung in
Zeichenketten
private void CmdAnzeige_Click(...)
{
string a, b;
double d;
int x;
b = "Hallo";
d = 4.6;
x = -5;
a = b + " Welt " + d + " " + x + " " + 12;
LblAnzeige.Text = a;
// LblAnzeige.Text = x;
}
Listing 2.6 Projekt »Verkettungsoperator«
Projekt
Alle Berechnungen und Erläuterungen innerhalb dieses Abschnitts können Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvollziehen.
Übung
Übung
ULogischeOperatoren
Ermitteln Sie das Ergebnis der beiden folgenden Ausdrücke, speichern Sie
es in einer Variablen eines geeigneten Datentyps, und zeigen Sie es an:
Zur Erläuterung:
왘 Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Datentypen zusammengesetzt.
왘 Die letzte Anweisung ist auskommentiert, weil sie zu einem Fehler
führt. Die int-Variable x kann nicht direkt als Wert für die Eigenschaft
Text verwendet werden. Sie muss zunächst umgewandelt werden.
왘 1. Ausdruck: 4 > 3 && –4 > –3
왘 2. Ausdruck: 4 > 3 || –4 > –3
54
55
2
2.2
Grundlagen
왘 Das Ergebnis ist in Abbildung 2.10 zu sehen.
왘 Ein weiteres Beispiel hierfür ist übrigens bereits in Abschnitt 1.4.5 zu
finden.
Abbildung 2.10 Verkettung
2.2.5 Zuweisungsoperatoren
Zeichen =
Den einfachsten Zuweisungsoperator, das Gleichheitszeichen, haben Sie
bereits genutzt. Zur Verkürzung von Anweisungen gibt es aber noch weitere Zuweisungsoperatoren. Eine Auswahl sehen Sie in Tabelle 2.7.
Beschreibung
-!
negatives Vorzeichen, logisches Nicht
*/%
Multiplikation, Division, Modulo
+-
Addition, Subtraktion
< > <= >=
Vergleichsoperatoren für kleiner und größer
== !=
Vergleichsoperatoren für gleich und ungleich
&&
logisches Und
||
logisches Oder
2
Tabelle 2.8 Je weiter oben die Operatoren in der Tabelle stehen, desto höher ist
ihre Priorität.
Wie bereits bei den Rechenoperatoren erwähnt: Mit Klammern kann diese
Rangfolge außer Kraft gesetzt werden, damit bestimmte Teilausdrücke vor
anderen Teilausdrücken ausgewertet werden. In Klammern gesetzte Operationen haben grundsätzlich Vorrang. Innerhalb der Klammern gilt jedoch wieder die normale Rangfolge der Operatoren.
Operator
Beispiel
Ergebnis
=
x=7
x erhält den Wert 7.
+=
x += 5
Der Wert von x wird um 5 erhöht.
-=
x -= 5
Der Wert von x wird um 5 verringert.
*=
x *= 3
Der Wert von x wird auf das Dreifache erhöht.
Übung
/=
x /= 3
Der Wert von x wird auf ein Drittel verringert.
%=
x %= 3
x wird durch 3 geteilt, der Rest der Division wird x
zugewiesen.
Sind die Bedingungen in Tabelle 2.9 wahr oder falsch? Lösen Sie die Aufgabe möglichst ohne Zuhilfenahme des PC.
+=
z += "abc"
Die Zeichenkette z wird um den Text abc verlängert.
Nr.
Werte
Bedingung
1
a=5 b=10
a>0 && b!=10
2
a=5 b=10
a>0 || b!=10
3
z=10 w=100
z!=0 || z>w || w-z==90
2.2.6 Rangfolge der Operatoren
4
z=10 w=100
z==11 && z>w || w-z==90
Enthält ein Ausdruck mehrere Operationen, werden die einzelnen Teilausdrücke in einer bestimmten Rangfolge ausgewertet und aufgelöst, die als
Rangfolge bzw. Priorität der Operatoren bezeichnet wird. Dabei gilt die in
Tabelle 2.8 dargestellte Rangfolge.
5
x=1.0 y=5.7
x>=.9 && y<=5.8
6
x=1.0 y=5.7
x>=.9 && !(y<=5.8)
7
n1=1 n2=17
n1>0 && n2>0 || n1>n2 && n2!=17
8
n1=1 n2=17
n1>0 && (n2>0 || n1>n2) && n2!=17
Tabelle 2.7 Zuweisungsoperatoren
Priorität
Operator
Operatoren
Klammern
Übung
UOperatoren
Tabelle 2.9 Übung UOperatoren
56
57
2
2.3
Grundlagen
Einfache Steuerelemente
2.3 Einfache Steuerelemente
2
Windows-Programmierung mit C# innerhalb von Visual Studio besteht
prinzipiell aus zwei Teilen: der Arbeit mit visuellen Steuerelementen und
der Programmierung mit der Sprache. Beides soll in diesem Buch parallel
vermittelt werden, um so die eher theoretischen Abschnitte zur Programmiersprache durch anschauliche Praxisbeispiele zu vertiefen.
Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbeitet, bevor im nächsten Abschnitt die Verzweigungen zur Programmsteuerung vorgestellt werden: den Steuerelementen Panel, Zeitgeber, Textfeld
und Zahlenauswahlfeld.
2.3.1 Panel
Container
Ein Panel dient normalerweise als Container für andere Steuerelemente. In
unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und für
eine kleine Animation genutzt.
Die Eigenschaften BackColor (Hintergrundfarbe), Location (Position) und
Size (Größe) sind Ihnen bereits von anderen Steuerelementen her bekannt.
Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel
durch Betätigung von vier Buttons um 10 Pixel nach oben, unten, links
oder rechts verschoben. Es hat die Größe 100 × 100 Pixel, die Startposition
X=145 und Y=80 sowie eine eigene Hintergrundfarbe. Die Bewegung wird
mithilfe der Struktur Point durchgeführt.
In Abbildung 2.11 und Abbildung 2.12 ist das Panel im Startzustand bzw.
nach einigen Klicks zu sehen.
Abbildung 2.12 Panel, nach ein paar Klicks
Der Programmcode:
private void CmdNachOben_Click(...)
{
p.Location = new Point(p.Location.X, p.Location.Y - 10);
}
private void CmdNachLinks_Click(...)
{
p.Location = new Point(p.Location.X - 10, p.Location.Y);
}
private void CmdNachRechts_Click(...)
{
p.Location = new Point(p.Location.X + 10, p.Location.Y);
}
private void CmdNachUnten_Click(...)
{
p.Location = new Point(p.Location.X, p.Location.Y + 10);
}
Listing 2.7 Projekt »Panel«
2.3.2 Zeitgeber
Ein Zeitgeber (Timer) erzeugt in festgelegten Abständen Zeittakte. Diese
Zeittakte sind Ereignisse, die der Entwickler mit verschiedenen Aktionen
verbinden kann. Das zugehörige Ereignis heißt Tick. Ein Zeitgeber kann wie
jedes andere Steuerelement zum Formular hinzugefügt werden. Da es sich
aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt, wird
Timer-Intervall
Enabled
Abbildung 2.11 Panel, Startzustand
58
59
2
2.3
Grundlagen
er unterhalb des Formulars angezeigt. Auch zur Laufzeit ist er nicht sichtbar. Seine wichtigste Eigenschaft ist das Zeitintervall, in dem das Ereignis
auftreten soll. Dieses Zeitintervall wird in Millisekunden angegeben. Die Eigenschaft Enabled dient der Aktivierung bzw. Deaktivierung des Zeitgebers.
Sie können sie zur Entwicklungszeit oder zur Laufzeit auf true oder false
stellen.
Einfache Steuerelemente
Übung
Erstellen Sie eine Windows-Anwendung. In der Mitte eines Formulars sollen zu Beginn vier Panels verschiedener Farbe der Größe 20 × 20 Pixel platziert werden, siehe Abbildung 2.14.
Übung
UPanelZeitgeber
2
Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunächst ein
Formular mit zwei Buttons. Betätigen Sie den Start-Button, erscheint ein
x in einem Bezeichnungsfeld. Alle 0,5 Sekunden erscheint automatisch ein
weiteres x, siehe Abbildung 2.13. Dies wird durch den Timer gesteuert, bei
welchem der Wert für die Eigenschaft Interval auf 500 steht. Nach Betätigung des Stop-Buttons kommt kein weiteres x mehr hinzu.
Abbildung 2.14 Startzustand
Sobald ein Start-Button betätigt wird, sollen sich diese vier Panels diagonal in ca. fünf bis zehn Sekunden zu den Ecken des Formulars bewegen, jedes Panel in eine andere Ecke (siehe Abbildung 2.15).
Abbildung 2.13 Nach einigen Sekunden
Der zugehörige Code:
private void CmdStart_Click(...)
{
TimAnzeige.Enabled = true;
}
private void CmdStop_Click(...)
{
TimAnzeige.Enabled = false;
}
private void TimAnzeige_Tick(...)
{
LblAnzeige.Text += "x";
}
Listing 2.8 Projekt »Zeitgeber«
60
Abbildung 2.15 Nach einigen Sekunden
Übung
Diese Übung gehört nicht zum Pflichtprogramm. Sie ist etwas umfangreicher, verdeutlicht aber die Möglichkeiten einer schnellen Visualisierung
von Prozessen durch C# innerhalb von Visual Studio durch einige wenige
Programmzeilen.
Übung UKran
Konstruieren Sie aus mehreren Panels einen Kran (Fundament, senkrechtes Hauptelement, waagerechter Ausleger, senkrechter Haken am Ausleger). Der Benutzer soll die Möglichkeit haben, über insgesamt acht Buttons
die folgenden Aktionen auszulösen:
61
2
2.3
Grundlagen
왘 Haken um 10 Pixel ausfahren bzw. einfahren
왘 Ausleger um 10 Pixel ausfahren bzw. einfahren
왘 Kran um 10 Pixel nach rechts bzw. links fahren
Einfache Steuerelemente
Manche Bewegungen des Krans werden vermutlich wenig natürlich wirken. Mit zunehmendem Programmierwissen werden Sie dieses Problem
später aber beheben können.
2
왘 Kran um 10 Pixel in der Höhe ausfahren bzw. einfahren
Denken Sie daran, dass bei vielen Bewegungen mehrere Steuerelemente
bewegt werden müssen, da der Kran sonst seinen Zusammenhalt verliert.
Manche Aktionen resultieren nur aus Größenveränderungen (Eigenschaften Width und Height), andere nur aus Ortsveränderungen (Location), wieder andere aus beidem. In Abbildung 2.16 und Abbildung 2.17 sehen Sie den
Kran im Startzustand bzw. nach einigen Klicks.
2.3.3 Textfelder
Ein Textfeld dient in erster Linie dazu, die Eingabe von Text oder Zahlen
vom Benutzer entgegenzunehmen. Diese Eingaben werden in der Eigenschaft Text des Textfelds gespeichert. Das Aussehen und das Verhalten
eines Textfelds werden u. a. durch folgende Eigenschaften bestimmt:
Eingabefeld
왘 MultiLine: Steht MultiLine auf true, können Sie bei der Eingabe und bei
der Anzeige mit mehreren Textzeilen arbeiten.
왘 ScrollBars: Sie können ein Textfeld mit vertikalen und/oder horizontalen Bildlaufleisten zur Eingabe und Anzeige längerer Texte versehen.
왘 MaxLength: Mit dieser Eigenschaft können Sie die Anzahl der Zeichen des
Textfelds beschränken. Ist keine Beschränkung vorgesehen, kann das
Textfeld insgesamt 32768 Zeichen aufnehmen.
왘 PasswordChar: Falls Sie für diese Eigenschaft im Entwurfsmodus ein
Platzhalterzeichen eingegeben haben, wird während der Laufzeit für
jedes eingegebene Zeichen nur dieser Platzhalter angezeigt. Diese Eigenschaft wird vor allem bei Passwortabfragen verwendet.
Abbildung 2.16 Startzustand
Passwort
Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z. B. (Strg) +
(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw. aus der Zwischenablage eingefügt werden.
Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in
einem Textfeld einen Text eingeben. Nach Betätigung des Buttons Ausgabe wird der eingegebene Text in einem zusammenhängenden Satz ausgegeben (siehe Abbildung 2.18).
Abbildung 2.17 Nach einigen Aktionen
62
Abbildung 2.18 Eingabe ins Textfeld
63
2
2.3
Grundlagen
Der Code lautet wie folgt:
private void CmdAusgabe_Click(...)
{
LblAusgabe.Text = "Sie haben '" + TxtEingabe.Text +
"' eingegeben";
}
Listing 2.9 Projekt »Textfelder«
Zur Erläuterung:
왘 In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert. Die
Eigenschaft wird in einen längeren Ausgabetext eingebettet.
Zahlen eingeben
Bei der Eingabe und Auswertung von Zahlen sind einige Besonderheiten zu
beachten. Im nachfolgenden Programm, ebenfalls im Projekt Textfelder,
kann der Benutzer in einem Textfeld eine Zahl eingeben. Nach Betätigung
des Buttons Rechnen wird der Wert dieser Zahl verdoppelt, das Ergebnis
wird in einem Label darunter ausgegeben:
private void CmdRechnen_Click(...)
{
double wert;
wert = Convert.ToDouble(TxtEingabe.Text);
wert = wert * 2;
LblAusgabe.Text = "Ergebnis: " + wert;
}
Einfache Steuerelemente
왘 Stellt die eingegebene Zeichenkette keine Zahl dar, kommt es zu einem
Laufzeitfehler. Diese Situation sollten Sie natürlich vermeiden:
2
– Sie können dafür vorher überprüfen, ob es sich bei der Zeichenkette
um eine gültige Zahl handelt, und entsprechend reagieren. Das wird
Ihnen möglich sein, sobald Sie die in Abschnitt 2.3 beschriebenen Verzweigungen zur Programmsteuerung beherrschen.
– Allgemein können Sie Programme so schreiben, dass ein Programmabbruch abgefangen wird. Dazu werden Sie in der Lage sein, sobald
Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden können.
Ausnahmebehandlung
Einige Beispiele:
Abbildung 2.19 zeigt die Eingabe einer Zahl mit Nachkommastellen.
Abbildung 2.19 Eingabe einer Zahl mit Nachkommastellen
Die Eingabe einer Zeichenkette, wie zum Beispiel »abc«, führt zur Anzeige
einer nicht behandelten Ausnahme. Die Zeile, in welcher der Fehler auftritt,
wird im Code markiert, damit der Fehler beseitigt werden kann (siehe Abbildung 2.20).
Debugging beenden
Listing 2.10 Projekt »Textfelder«, Zahleneingabe
Zur Erläuterung:
ToDouble()
Es soll dafür gesorgt werden, dass der Inhalt des Textfelds explizit in eine
Zahl (mit möglichen Nachkommastellen) umgewandelt wird. Das erreichen Sie mithilfe der Methode ToDouble() aus der Klasse Convert. Die Klasse
Convert bietet eine Reihe von Methoden für die Umwandlung (sprich Konvertierung) in andere Datentypen.
왘 Wenn eine Zeichenkette eingegeben wird, die eine Zahl darstellt, wird sie
auf die oben angegebene Weise in eine Zahl umgewandelt, mit der anschließend gerechnet werden kann.
64
Abbildung 2.20 Markierung der Fehlerzeile
Sie können die aktuellen Werte von Variablen in diesem Moment der
Unterbrechung kontrollieren, indem Sie die Maus über diesen Variablen
65
2
2.4
Grundlagen
platzieren. Anschließend muss das Programm über den Menüpunkt Debuggen • Debugging beenden beendet werden, bevor es neu gestartet
werden kann.
Das wichtigste Ereignis dieses Steuerelements ist ValueChanged. Es tritt bei
der Veränderung der Eigenschaft Value ein und sollte anschließend zur
Programmsteuerung verwendet werden.
Die Eingabe einer Zahl, bei der ein Punkt anstelle eines Kommas zur Abtrennung von Nachkommastellen eingegeben wird, führt zu einem ganz
anderen Rechenergebnis, siehe Abbildung 2.21.
Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese
Eigenschaften und das eben angesprochene Ereignis genutzt. Der Benutzer
kann hierbei Zahlenwerte zwischen –5,0 und +5,0 in Schritten von 0,1 über
ein Zahlenauswahlfeld einstellen. Der ausgewählte Wert wird unmittelbar
in einem Label angezeigt (siehe Abbildung 2.22).
Abbildung 2.21 Punkt vor den Nachkommastellen
Abbildung 2.22 Zahlenauswahlfeld
Der Punkt wird ignoriert und die Zahl 3,52 wird daher als 352 interpretiert,
was zu dem Ergebnis 704 führt.
Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt:
2.3.4 Zahlenauswahlfeld
NumericUpDown
Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere
Möglichkeit dar, Zahlenwerte an ein Programm zu übermitteln. Die Zahlenwerte können innerhalb selbst gewählter Grenzen und in selbst definierten Schritten über zwei kleine Pfeiltasten ausgewählt werden. Sie
können aber auch weiterhin wie bei einem Textfeld eingegeben werden.
Wichtige Eigenschaften des Steuerelements sind:
Value
왘 Value: bezeichnet zur Entwicklungszeit den Startwert und zur Laufzeit
den vom Benutzer aktuell eingestellten Wert.
왘 Maximum, Minimum: bestimmen den größtmöglichen Wert und den kleinstmöglichen Wert der Eigenschaft Value. Es handelt sich also um die Werte, die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten
erreicht werden können.
왘 Increment: Mit Increment wird die Schrittweite eingestellt, mit der sich
der Wert (Eigenschaft Value) ändert, wenn der Benutzer eine der kleinen
Pfeiltasten betätigt.
왘 DecimalPlaces: bestimmt die Anzahl der Nachkommastellen in der Anzeige des Zahlenauswahlfelds.
66
Verzweigungen
ValueChanged
2
왘 Value: Wert 2, die Anwendung startet also bei dem Wert 2,0 für das
Zahlenauswahlfeld
왘 Maximum, Minimum: Werte –5 und +5
왘 Increment: Wert 0,1
왘 DecimalPlaces: Wert 1 zur Anzeige einer einzelnen Nachkommastelle
Der Code lautet:
private void NumEingabe_ValueChanged(...)
{
LblAusgabe.Text = "Wert: " + NumEingabe.Value;
}
Listing 2.11 Projekt »ZahlenAufAb«
2.4 Verzweigungen
Der Programmcode wird bisher rein sequenziell abgearbeitet, also eine
Anweisung nach der anderen. Kontrollstrukturen ermöglichen eine Steuerung dieser Reihenfolge. Diese Kontrollstrukturen unterteilen sich in Verzweigungen und Schleifen. Verzweigungen gestatten es dem Programm,
sich in verschiedene alternative Anweisungsblöcke zu verzweigen.
67
Anhang B
Lösungen der Übungsaufgaben
Die Bearbeitung der Beispiele, das Verständnis für ihren Aufbau sowie das
selbstständige Lösen der Übungen sind ein wichtiger Schritt beim Erlernen
der Programmierung.
In diesem Abschnitt finden Sie jeweils eine Lösungsmöglichkeit zu jeder
Übung. Lassen Sie sich nicht irritieren, wenn Ihre Lösung anders aussieht.
Es ist in erster Linie wichtig, dass das Ergebnis stimmt. Vielleicht bietet Ihnen die hier vorliegende Lösung aber auch einen Denkanstoß zur Verbesserung.
B.1 Lösung der Übungsaufgabe aus Kapitel 1
B.1.1 Lösung UName
using System;
using System.Windows.Forms;
namespace UName
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void CmdMeinName_Click(object sender, EventArgs e)
{
LblMeinName.Text = "Claus Clever";
}
private void CmdEnde_Click(object sender, EventArgs e)
515
B
B.2 Lösungen der Übungsaufgaben aus Kapitel 2
Lösungen der Übungsaufgaben
{
y = y + 0.1;
x = x + 0.1;
LblAnzeige.Text = "x: " + x + "\n" + "y: " + y;
Close();
}
}
}
}
private void CmdAnzeigen2_Click(...)
{
double z = 0.0;
z = z + 0.1;
x = x + 0.1;
LblAnzeige.Text = "x: " + x + "\n" + "z: " + z;
}
B.2 Lösungen der Übungsaufgaben aus Kapitel 2
B.2.1 Lösung UDatentypen
private void CmdAnzeigen_Click(...)
{
string nachname, vorname, strasse, plz, ort;
int alter;
double gehalt;
nachname = "Clever";
vorname = "Claus";
strasse = "Bergstraße 34";
plz = "09445";
ort = "Brunnstadt";
alter = 32;
gehalt = 2852.55;
B.2.3 Lösung URechenoperatoren
private void CmdAnzeigen1_Click(...)
{
double x;
x = 3 * -2.5 + 4 * 2;
LblAnzeige.Text = "Ergebnis: " + x;
}
}
private void CmdAnzeigen2_Click(...)
{
double x;
x = 3 * (-2.5 + 4) * 2;
LblAnzeige.Text = "Ergebnis: " + x;
}
B.2.2 Lösung UGueltigkeitsbereich
B.2.4 Lösung UVergleichsoperatoren
public partial class Form1 : Form
{
...
private double x = 0.0;
private void CmdVergleich1_Click(...)
{
bool p;
p = 12 - 3 >= 4 * 2.5;
LblAnzeige.Text = "Ergebnis: " + p;
}
LblAnzeige.Text = "Adresse: " + "\n" + vorname
+ " " + nachname + "\n" + strasse + "\n"
+ plz + " " + ort + "\n" + "\n" + "Alter: "
+ alter + "\n" + "Gehalt: " + gehalt;
private void CmdAnzeigen1_Click(...)
{
double y = 0.0;
516
}
517
Auf einen Blick
Auf einen Blick
1
Einführung .............................................................................................
15
2
Grundlagen ............................................................................................
39
3
Fehlerbehandlung ............................................................................... 115
4
Erweiterte Grundlagen ...................................................................... 129
5
Objektorientierte Programmierung .............................................. 187
6
Wichtige Klassen in .NET ................................................................... 247
7
Weitere Elemente eines Windows-Programms ........................ 303
8
Datenbankanwendungen mit ADO.NET ...................................... 357
9
Internetanwendungen mit ASP.NET ............................................. 413
10
Zeichnen mit GDI+ .............................................................................. 439
11
Beispielprojekte ................................................................................... 455
12
Windows Presentation Foundation .............................................. 481
Inhalt
Inhalt
1
Einführung
15
1.1
Aufbau dieses Buchs ...................................................................................
15
1.2
Visual Studio 2017 .......................................................................................
16
1.3
Mein erstes Windows-Programm .........................................................
16
1.4
Visual Studio-Entwicklungsumgebung ..............................................
17
1.4.1
Ein neues Projekt ........................................................................
17
1.4.2
Einfügen von Steuerelementen .............................................
19
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.4.10
1.4.11
1.4.12
Arbeiten mit dem Eigenschaften-Fenster ..........................
Speichern eines Projekts ..........................................................
Das Codefenster ..........................................................................
Schreiben von Programmcode ...............................................
Kommentare ................................................................................
Starten, Ausführen und Beenden des Programms ..........
Ausführbares Programm ..........................................................
Schließen und Öffnen eines Projekts ...................................
Übung .............................................................................................
Empfehlungen für Zeilenumbrüche ....................................
20
23
23
26
27
28
29
29
30
30
1.5
Arbeiten mit Steuerelementen ..............................................................
31
1.5.1
1.5.2
Steuerelemente formatieren ..................................................
Steuerelemente kopieren ........................................................
31
32
1.5.3
1.5.4
1.5.5
1.5.6
Eigenschaften zur Laufzeit ändern .......................................
Vergabe und Verwendung von Namen ..............................
Verknüpfung von Texten, mehrzeilige Texte ....................
Eigenschaft BackColor, Farben allgemein ..........................
33
36
36
37
2
Grundlagen
39
2.1
Variablen und Datentypen .......................................................................
39
2.1.1
2.1.2
2.1.3
39
40
40
Namen, Werte .............................................................................
Deklarationen ..............................................................................
Datentypen ...................................................................................
5
Inhalt
Inhalt
2.1.4
2.1.5
2.1.6
2.2
2.3
Gültigkeitsbereich ......................................................................
Konstanten ...................................................................................
Enumerationen ...........................................................................
44
47
48
Operatoren ......................................................................................................
50
2.2.1
2.2.2
2.2.3
2.2.4
2.2.5
2.2.6
Rechenoperatoren ......................................................................
Vergleichsoperatoren ................................................................
Logische Operatoren .................................................................
Verkettungsoperator .................................................................
Zuweisungsoperatoren ............................................................
Rangfolge der Operatoren .......................................................
50
53
54
55
56
56
3
Fehlerbehandlung
115
3.1
Entwicklung eines Programms ...............................................................
115
3.2
Fehlerarten ......................................................................................................
116
3.3
Syntaxfehler und IntelliSense .................................................................
117
Einfache Steuerelemente ..........................................................................
58
3.4
Laufzeitfehler und Exception Handling ..............................................
119
3.4.1
119
2.3.1
2.3.2
2.3.3
2.3.4
2.4
2.5
2.6
2.7
6
Panel ...............................................................................................
Zeitgeber .......................................................................................
Textfelder ......................................................................................
Zahlenauswahlfeld ....................................................................
58
59
63
66
Verzweigungen .............................................................................................
67
2.4.1
2.4.2
2.4.3
68
75
78
if...else .............................................................................................
switch...case ..................................................................................
Übungen ........................................................................................
Verzweigungen und Steuerelemente .................................................
79
2.5.1
2.5.2
2.5.3
2.5.4
2.5.5
2.5.6
Kontrollkästchen .........................................................................
Optionsschaltflächen ................................................................
Mehrere Ereignisse in einer Methode behandeln ...........
Mehrere Gruppen von Optionsschaltflächen ...................
Methode ohne Ereignis, Modularisierung .........................
Schieberegler ...............................................................................
79
82
84
86
89
90
Schleifen ...........................................................................................................
92
2.6.1
2.6.2
2.6.3
for-Schleife ....................................................................................
while- und do...while-Schleife ................................................
Übungen ........................................................................................
92
95
98
Schleifen und Steuerelemente ...............................................................
101
2.7.1
2.7.2
2.7.3
2.7.4
2.7.5
2.7.6
101
101
102
104
104
106
Listenfeld .......................................................................................
Listenfeld füllen ..........................................................................
Wichtige Eigenschaften ...........................................................
foreach-Schleife ..........................................................................
Wechsel der Auswahl ................................................................
Wichtige Methoden ...................................................................
2.7.7
2.7.8
3.5
Mehrfachauswahl ......................................................................
Kombinationsfelder ...................................................................
Programm mit Laufzeitfehlern ..............................................
109
110
3.4.2
Einfaches Exception Handling ...............................................
121
3.4.3
Erweitertes Exception Handling ............................................
123
Logische Fehler und Debugging .............................................................
124
3.5.1
3.5.2
Einzelschrittverfahren ..............................................................
Haltepunkte .................................................................................
124
126
3.5.3
Überwachungsfenster ..............................................................
126
4
Erweiterte Grundlagen
129
4.1
Steuerelemente aktivieren ......................................................................
129
4.1.1
4.1.2
Ereignis Enter ...............................................................................
Eigenschaften Enabled und Visible ......................................
129
132
Bedienung per Tastatur .............................................................................
135
4.2.1
4.2.2
Eigenschaften TabIndex und TabStop .................................
Tastenkombination für Steuerelemente ............................
135
136
Ereignisgesteuerte Programmierung ..................................................
137
4.3.1
4.3.2
4.3.3
4.3.4
Eine Ereigniskette .......................................................................
Endlose Ereignisketten .............................................................
Textfelder koppeln .....................................................................
Tastatur und Maus .....................................................................
137
139
141
142
Datenfelder .....................................................................................................
144
4.4.1
4.4.2
144
146
4.2
4.3
4.4
Eindimensionale Datenfelder .................................................
Ein Feld durchsuchen ................................................................
7
Inhalt
Inhalt
5.7
Delegates .........................................................................................................
205
5.8
Statische Elemente ......................................................................................
208
5.9
Vererbung ........................................................................................................
211
5.10
Konstruktoren bei Vererbung .................................................................
215
Methoden ......................................................................................................... 160
5.11
Polymorphie ....................................................................................................
217
4.5.1
4.5.2
4.5.3
4.5.4
4.5.5
4.5.6
4.5.7
4.5.8
5.12
Schnittstellen .................................................................................................
221
5.13
Strukturen ........................................................................................................
224
4.4.3
4.4.4
4.4.5
4.4.6
4.4.7
4.5
4.6
Weitere Feldoperationen .........................................................
Mehrdimensionale Datenfelder ............................................
Datenfelder initialisieren .........................................................
Verzweigte Datenfelder ...........................................................
Datenfelder sind dynamisch ...................................................
Einfache Methoden ....................................................................
Übergabe per Referenz .............................................................
Methoden mit Rückgabewerten ...........................................
Optionale Argumente ...............................................................
Benannte Argumente ................................................................
Beliebig viele Argumente .........................................................
Rekursiver Aufruf ........................................................................
Übungen zu Methoden ............................................................
148
150
155
156
158
161
163
167
169
170
172
173
176
5.14
Generische Typen .........................................................................................
228
5.14.1
5.14.2
5.14.3
Eine Liste von Zeichenketten ..................................................
Eine Liste von Objekten ............................................................
Ein Dictionary von Objekten ...................................................
229
232
235
Eigene Klassenbibliotheken .....................................................................
238
5.15.1
5.15.2
DLL erstellen .................................................................................
DLL nutzen ....................................................................................
239
241
5.16
Mehrere Formulare ......................................................................................
242
6
Wichtige Klassen in .NET
247
Klasse String für Zeichenketten .............................................................
247
6.1.1
6.1.2
6.1.3
6.1.4
6.1.5
6.1.6
6.1.7
6.1.8
6.1.9
Eigenschaften der Klasse String ............................................
Trimmen ........................................................................................
Splitten ...........................................................................................
Suchen ............................................................................................
Einfügen .........................................................................................
Löschen ..........................................................................................
Teilzeichenkette ermitteln ......................................................
Zeichen ersetzen .........................................................................
Ausgabe formatieren ................................................................
248
250
251
253
256
258
259
261
262
Datum und Uhrzeit ......................................................................................
264
6.2.1
6.2.2
6.2.3
264
266
269
5.15
Konsolenanwendung .................................................................................. 176
4.6.1
4.6.2
4.6.3
4.6.4
4.6.5
4.6.6
Anwendung erzeugen ...............................................................
Ein- und Ausgabe von Text ......................................................
Eingabe einer Zahl ......................................................................
Erfolgreiche Eingabe einer ganzen Zahl .............................
Ausgabe formatieren ................................................................
Aufruf von der Kommandozeile ............................................
176
177
178
180
181
183
6.1
8
5
Objektorientierte Programmierung
187
5.1
Was ist Objektorientierung? ...................................................................
187
5.2
Klasse, Eigenschaft, Methode, Objekt ................................................ 188
5.3
Eigenschaftsmethode .................................................................................
192
5.4
Konstruktor .....................................................................................................
194
5.5
Namensräume ............................................................................................... 198
5.6
Referenzen, Vergleiche und Typen .......................................................
199
5.6.1
5.6.2
5.6.3
5.6.4
5.6.5
200
201
202
203
205
Referenzen ....................................................................................
Operator == ..................................................................................
Objekte vergleichen ...................................................................
Typ eines Objekts ermitteln ....................................................
Typ eines Objekts durch Vergleich ermitteln ....................
6.2
Eigenschaften von DateTime .................................................
Rechnen mit Datum und Uhrzeit ..........................................
DateTimePicker ...........................................................................
9
Inhalt
Inhalt
6.3
Dateien und Verzeichnisse ....................................................................... 272
6.3.1
6.3.2
6.3.3
6.3.4
6.3.5
6.3.6
6.3.7
6.3.8
6.3.9
6.3.10
6.4
6.5
7
7.1
7.2
Lesen aus einer Textdatei ........................................................
Schreiben in eine Textdatei .....................................................
Sicheres Lesen aus einer Textdatei .......................................
Sicheres Schreiben in eine Textdatei ...................................
Die Klassen File und Directory ................................................
Das aktuelle Verzeichnis ..........................................................
Eine Liste der Dateien ................................................................
Eine Liste der Dateien und Verzeichnisse ...........................
Informationen über Dateien und Verzeichnisse ..............
Bewegen in der Verzeichnishierarchie ................................
272
274
276
279
280
281
282
283
284
285
XML-Dateien ...................................................................................................
287
6.4.1
6.4.2
Aufbau von XML-Dateien .........................................................
Schreiben in eine XML-Datei ...................................................
287
288
6.4.3
6.4.4
6.4.5
Lesen aus einer XML-Datei ......................................................
Schreiben von Objekten ...........................................................
Lesen von Objekten ....................................................................
290
292
294
Rechnen mit der Klasse Math .................................................................
296
Weitere Elemente eines WindowsProgramms
303
Hauptmenü .....................................................................................................
303
7.1.1
7.1.2
7.1.3
7.1.4
7.1.5
7.1.6
303
306
308
308
310
311
Kontextmenü ................................................................................................. 312
7.2.1
7.2.2
7.3
10
Erstellung des Hauptmenüs ...................................................
Code des Hauptmenüs .............................................................
Klasse Font ....................................................................................
Schriftart ........................................................................................
Schriftgröße ..................................................................................
Schriftstil .......................................................................................
Erstellung des Kontextmenüs ................................................
Code des Kontextmenüs ..........................................................
312
313
Symbolleiste ...................................................................................................
315
7.3.1
7.3.2
315
316
Erstellung der Symbolleiste ....................................................
Code der Symbolleiste ..............................................................
7.4
Statusleiste ......................................................................................................
319
7.4.1
7.4.2
Erstellung der Statusleiste ......................................................
Code der Statusleiste ................................................................
319
319
7.5
Eingabedialogfeld ........................................................................................
321
7.6
Ausgabedialogfeld .......................................................................................
325
7.7
Standarddialogfelder ..................................................................................
331
7.7.1
7.7.2
7.7.3
7.7.4
7.7.5
Datei öffnen .................................................................................
Datei speichern unter ...............................................................
Verzeichnis auswählen .............................................................
Farbe auswählen .........................................................................
Schrifteigenschaften auswählen ..........................................
331
333
335
337
338
7.8
Steuerelement ListView ............................................................................
339
7.9
Steuerelement Chart ...................................................................................
343
7.10
Steuerelement DataGridView ................................................................
347
7.11
Lokalisierung ..................................................................................................
352
8
Datenbankanwendungen mit ADO.NET
357
8.1
Was sind relationale Datenbanken? ....................................................
357
8.1.1
8.1.2
8.1.3
8.1.4
Beispiel »Lager« ...........................................................................
Indizes ............................................................................................
Relationen .....................................................................................
Übungen ........................................................................................
357
360
362
366
Anlegen einer Datenbank in MS Access .............................................
368
8.2.1
8.2.2
Aufbau von Access .....................................................................
Datenbankentwurf in MS Access 2016 ...............................
368
369
8.2.3
Übungen ........................................................................................
374
Datenbankzugriff mit C# innerhalb von Visual Studio ...............
374
8.3.1
8.3.2
8.3.3
8.3.4
8.3.5
375
376
376
377
377
8.2
8.3
Beispieldatenbank ......................................................................
Ablauf eines Zugriffs .................................................................
Verbindung ...................................................................................
SQL-Befehl .....................................................................................
OleDb ..............................................................................................
11
Inhalt
Inhalt
Auswahlabfrage ..........................................................................
Aktionsabfrage ............................................................................
378
380
9.2
Ein lokaler Webserver .................................................................................
415
9.2.1
Eine erste Internetanwendung ..............................................
415
SQL-Befehle .....................................................................................................
382
9.3
8.4.1
8.4.2
8.4.3
8.4.4
8.4.5
Auswahl mit SELECT ..................................................................
Ändern mit UPDATE ...................................................................
Löschen mit DELETE ...................................................................
Einfügen mit INSERT ..................................................................
Typische Fehler in SQL ...............................................................
383
387
388
388
388
Eine erste ASP.NET-Anwendung ............................................................
418
9.3.1
Fehlerhafte Programmierung .................................................
420
9.4
Formatierung von Internetseiten ..........................................................
421
9.5
Senden und Auswerten von Formulardaten ....................................
423
9.6
Weitere Formularelemente .....................................................................
425
Ein Verwaltungsprogramm ......................................................................
390
9.7
Ein Kalenderelement ...................................................................................
428
8.5.1
8.5.2
8.5.3
8.5.4
8.5.5
8.5.6
Initialisierung ...............................................................................
Alle Datensätze sehen ..............................................................
Datensatz einfügen ...................................................................
Datensatz ändern .......................................................................
Datensatz löschen ......................................................................
Datensatz suchen .......................................................................
390
391
394
396
399
401
9.8
ASP.NET und ADO.NET ...............................................................................
430
9.9
Datenbank im Internet ändern ..............................................................
433
10
Zeichnen mit GDI+
439
Abfragen über mehrere Tabellen ..........................................................
403
8.6.1
8.6.2
8.6.3
8.6.4
8.6.5
Datenbankmodell und Tabellen ............................................
Alle Personen ...............................................................................
Anzahl der Kunden .....................................................................
Alle Kunden mit allen Projekten ............................................
Alle Personen mit allen Projektzeiten ..................................
403
405
405
405
406
10.1
Grundlagen von GDI+ .................................................................................
439
10.2
Linie, Rechteck, Polygon und Ellipse zeichnen ................................
439
8.6.6
8.6.7
8.6.8
8.6.9
Alle Personen mit Zeitsumme ................................................
Alle Personen mit allen Personenzeiten .............................
Alle Projekte mit allen Zeitsumme .......................................
JOIN oder WHERE .......................................................................
407
408
409
409
10.2.1
10.2.2
10.2.3
10.2.4
10.2.5
10.2.6
Grundeinstellungen ...................................................................
Linie .................................................................................................
Rechteck .........................................................................................
Polygon ...........................................................................................
Ellipse ..............................................................................................
Dicke und Farbe ändern, Zeichnung löschen ....................
440
441
442
443
443
444
Verbindung zu MySQL ................................................................................
410
10.3
Text schreiben ................................................................................................
445
8.7.1
410
10.4
Bilder darstellen ............................................................................................
447
10.5
Dauerhaft zeichnen .....................................................................................
449
10.6
Zeichnen einer Funktion ............................................................................
451
11
Beispielprojekte
455
11.1
Spielprogramm Tetris .................................................................................
455
11.1.1
11.1.2
455
456
8.3.6
8.3.7
8.4
8.5
8.6
8.7
9
9.1
12
.NET-Treiber ..................................................................................
Internetanwendungen mit ASP.NET
413
Grundlagen von Internetanwendungen ............................................
413
9.1.1
9.1.2
9.1.3
413
414
415
Statische Internetanwendungen ..........................................
Dynamische Internetanwendungen ....................................
Vorteile von ASP.NET .................................................................
Spielablauf ....................................................................................
Programmbeschreibung ..........................................................
13
Inhalt
11.1.3
11.1.4
11.1.5
11.1.6
11.1.7
11.1.8
11.1.9
11.1.10
11.2
Steuerelemente ...........................................................................
Initialisierung des Programms ...............................................
Erzeugen eines neuen Panels .................................................
Der Zeitgeber ...............................................................................
Panels löschen .............................................................................
Panels seitlich bewegen ...........................................................
Panels nach unten bewegen ...................................................
Pause ...............................................................................................
Lernprogramm Vokabeln .......................................................................... 468
11.2.1
11.2.2
11.2.3
11.2.4
11.2.5
11.2.6
11.2.7
Benutzung des Programms .....................................................
Erweiterung des Programms ..................................................
Initialisierung des Programms ...............................................
Ein Test beginnt ..........................................................................
Zwei Hilfsmethoden ..................................................................
Die Antwort prüfen ....................................................................
Das Benutzermenü ....................................................................
468
470
471
472
475
476
477
12
Windows Presentation Foundation
481
12.1
Layout ................................................................................................................
482
12.2
Steuerelemente .............................................................................................
485
12.3
Frame-Anwendung ......................................................................................
488
12.4
Zweidimensionale Grafik .......................................................................... 491
12.5
Dreidimensionale Grafik ...........................................................................
494
12.6
Animation ........................................................................................................
498
12.7
WPF und Windows Forms .........................................................................
501
12.7.1
Windows Forms in WPF ............................................................
502
12.7.2
WPF in Windows Forms ............................................................
503
A
Installation und technische Hinweise .................................................
507
B
Lösungen der Übungsaufgaben ............................................................. 515
Index ....................................................................................................................................
14
457
458
460
461
462
466
467
468
535
Index
Index
- .......................................................................................... 50
--......................................................................................... 51
^ ......................................................................... 54, 74, 312
_ ....................................................................................... 385
! .......................................................................................... 54
!=........................................................................................ 53
(int) ............................................................................ 49, 69
[,]...................................................................................... 152
[]....................................................................................... 145
[][].................................................................................... 157
{ }........................................................................................ 24
@ ..................................................................................... 279
* .......................................................................................... 50
*=........................................................................................ 56
/.......................................................................................... 50
/* ........................................................................................ 27
//........................................................................................ 27
/= ....................................................................................... 56
& ..................................................................... 55, 136, 305
&&.............................................................................. 54, 72
#............................................................................. 182, 263
% ............................................................................... 50, 385
%=...................................................................................... 56
+ ........................................................................... 36, 50, 55
++....................................................................................... 51
+=....................................................................................... 56
< ................................................................................ 53, 384
<=.............................................................................. 53, 384
<>..................................................................................... 384
-=........................................................................................ 56
= ................................................................................ 56, 384
==.................................................................... 53, 153, 201
> ................................................................................ 53, 384
>=.............................................................................. 53, 384
| ................................................................................. 55, 312
|| .................................................................................. 54, 73
1:1-Relation .................................................................. 362
1:n-Relation ....................................................... 360, 363
3D-Körper .................................................................... 494
A
Abfrage
Datenbank.............................................................. 369
accdb-Datei ....................................................... 370, 375
Acos() ............................................................................. 297
Add()
Columns .................................................................. 342
Controls ................................................................... 461
Datum und Uhrzeit ............................................. 267
generische Liste ................................. 229, 394, 461
Items ......................................................................... 342
Listenfeld................................................................. 101
Series ......................................................................... 345
SubItems.................................................................. 342
AddHours().................................................................. 266
Addition .......................................................................... 50
AddMilliseconds() .................................................... 266
AddMonths() .............................................................. 266
AddSeconds().............................................................. 266
AddXY()
Points........................................................................ 345
AddYears() ................................................................... 266
ADO.NET....................................................................... 357
Aktionsabfrage .......................................................... 380
Aktivierungsreihenfolge ....................................... 135
AND................................................................................ 384
Anführungszeichen.................................................... 43
Angle
LabelStyle................................................................ 346
Animation ................................................................... 498
Anweisung ..................................................................... 26
im Block ...................................................................... 68
mehrfach durchlaufen .......................................... 92
Anwendung
abbrechen ............................................................... 181
Konfigurationsdatei ........................................... 513
mehrsprachig ........................................................ 352
weitergeben............................................................ 511
App.config ................................................................... 513
Append ......................................................................... 274
appSettings ................................................................. 513
ArcSegment ................................................................ 493
args ................................................................................. 184
535
Index
Index
Argument .................................................................... 161
beliebig viele .......................................................... 172
benannt.................................................................... 170
optional ................................................................... 169
ArgumentOutOfRangeException ...................... 256
Arkusfunktion ........................................................... 297
Array
Klasse............................................................... 148, 158
as ........................................................................... 153, 246
Asin().............................................................................. 297
asp Calendar ............................................................... 429
asp Label....................................................................... 422
ASP.NET ........................................................................ 413
Programmierfehler.............................................. 420
Atan() ............................................................................. 297
Attached Event .......................................................... 484
Attached Property .................................................... 484
AttributeCount
XmlTextReader ..................................................... 291
Auflistung ...................................................................... 92
Aufzählung.................................................................... 48
Ausgabe
Dialogfeld................................................................ 325
formatieren ............................................................ 181
mehrzeilig .................................................................. 37
Auskommentierung.................................................. 28
Austauschformat...................................................... 251
Auswahlabfrage......................................................... 378
Axis................................................................................. 345
AxisX
ChartArea................................................................ 345
AxisY
ChartArea................................................................ 345
B
BackColor ....................................................................... 37
base................................................................................. 213
base().............................................................................. 216
Basisklasse ................................................................... 212
Methode erreichen .............................................. 213
Bedingung ..................................................................... 68
Befehlsschaltfläche .................................................... 19
Bericht
Datenbank .............................................................. 369
Bezeichnungsfeld ....................................................... 19
536
Beziehung.......................................................... 357, 360
erstellen ................................................................... 373
Bézierkurve ................................................................. 492
Bild, in Zeichnung .................................................... 447
Bildlaufleiste.................................................................. 63
Bitweiser Operator...................................................... 55
body ............................................................................... 417
bool ................................................................................... 40
Border Style ................................................................... 22
break .................................................................. 76, 93, 96
Breakpoint................................................................... 126
Browser......................................................................... 413
Brush ............................................................................. 439
Button .............................................................................. 19
Button (Maus) ............................................................ 144
byte ................................................................................... 40
C
Calendar ....................................................................... 429
Canvas........................................................................... 483
Cascading Style Sheets ........................................... 414
case.................................................................................... 76
Cast......................................................... 49, 69, 224, 246
catch............................................................................... 122
Ceiling() ........................................................................ 297
char.......................................................................... 41, 250
Chart .............................................................................. 343
ChartAreas
Chart ......................................................................... 345
ChartImageFormat .................................................. 347
ChartType
Series ......................................................................... 345
CheckBox ........................................................................ 79
Internetformular.................................................. 425
WPF............................................................................ 487
Checked .................................................................... 80, 82
in Menü.................................................................... 307
CheckedChanged .................................................. 79, 82
Child
WindowsFormsHost ........................................... 502
class................................................................................ 188
Clear()
generische Liste .................................................... 393
Series ......................................................................... 345
Zeichnung ............................................................... 445
ClickOnce-Verteilung.............................................. 511
Clicks (Maus)............................................................... 144
Clone() ................................................................. 150, 221
Close()
Form ................................................................... 27, 244
OleDbConnection................................................. 377
StreamReader........................................................ 274
XmlTextReader ..................................................... 291
XmlTextWriter ...................................................... 290
Code
Ansicht ........................................................................ 23
auskommentieren .................................................. 28
editieren...................................................................... 27
Code-Ansicht .............................................................. 482
Collection..................................................................... 228
Color..................................................... 37, 337, 338, 445
ColorDialog ................................................................. 337
ColumnIndex ............................................................. 352
Columns ....................................................................... 349
ListView.................................................................... 342
Combobox................................................................... 110
CommandText........................................................... 377
Common Controls ..................................................... 20
Community-Version ............................................... 507
ConfigurationManager .......................................... 514
Connection.................................................................. 377
ConnectionString ........................................... 376, 432
MS Access vor 2007............................................. 380
Sammlung .............................................................. 411
Connector/NET.......................................................... 410
Console ......................................................................... 178
const ................................................................................ 48
Container .............................................................. 58, 417
Contains()
generische Liste..................................................... 229
ContainsKey()............................................................. 237
ContainsValue()......................................................... 237
ContextMenuStrip ................................................... 312
continue .................................................................. 93, 96
Controls .............................................................. 246, 461
Add().......................................................................... 207
Remove().................................................................. 207
Convert
ToDouble() ................................................................. 64
ToInt32().......................................................... 179, 324
Cos()................................................................................ 297
Count ............................................................................. 102
generische Liste..................................................... 229
COUNT()........................................................................ 405
Create
Öffnungsmodus........................................... 274, 275
CreateGraphics() ....................................................... 439
cs-Datei ......................................................................... 189
CSS .................................................................................. 414
CSV-Datei ..................................................................... 251
CurrentUICulture ..................................................... 354
D
Data Source ....................................................... 376, 411
DataBind().................................................................... 432
DataGrid....................................................................... 432
DataGridView............................................................. 347
CellEventArgs ........................................................ 352
ColumnCollection................................................ 349
Row............................................................................ 351
RowCollection ....................................................... 349
TextBoxColumn ................................................... 349
DataSource .................................................................. 432
Datei
Änderungszeitpunkt........................................... 281
Erzeugungszeitpunkt ......................................... 280
Information über ........................................ 277, 280
lesen .......................................................................... 272
öffnen ....................................................................... 274
öffnen, Dialog........................................................ 331
schließen.................................................................. 274
speichern ................................................................. 272
speichern, Dialog ................................................. 333
Zugriffszeitpunkt ................................................. 280
Datenbank................................................................... 357
Anzahl Datensätze .............................................. 405
Datensätze gruppieren...................................... 408
erstellen ................................................................... 370
Summe über Datensätze................................... 408
verknüpfte Abfrage ............................................. 403
Datenbankdatei......................................................... 368
Datenbanksystem .................................................... 360
Datenfeld ..................................................................... 144
Dimensionsgröße................................................. 152
durchsuchen ................................................. 146, 150
dynamisch verändern ........................................ 158
eindimensional..................................................... 144
initialisieren ........................................................... 155
Klasse........................................................................ 148
kopieren................................................................... 150
537
Index
Index
Datenfeld (Forts.)
mehrdimensional ................................................ 150
nicht rechteckig .................................................... 156
Referenz auf ........................................................... 160
sortieren................................................................... 150
übergeben ............................................................... 163
Verweis auf ............................................................. 145
verzweigt ................................................................. 156
Datenkapselung .............................................. 189, 214
Datenkonnektivität ................................................. 375
Datenpunkt
Chart ......................................................................... 345
Datenreihe................................................................... 345
Datensatz ..................................................................... 358
ändern ...................................................................... 387
auswählen............................................................... 383
einfügen................................................................... 388
löschen ..................................................................... 388
sortieren................................................................... 386
Datentyp ........................................................................ 40
benutzerdefiniert ................................................. 224
generisch ................................................................. 228
DateTime...................................................................... 264
DateTimePicker......................................................... 269
DateTimePickerFormat.......................................... 269
Datum ........................................................................... 264
berechnen................................................................ 266
Bestandteil.............................................................. 265
eingeben .................................................................. 269
Day.................................................................................. 264
DayOfWeek .......................................................... 49, 264
DayOfYear.................................................................... 264
Debug ............................................................................ 124
beenden............................................................. 66, 121
Debuggen
Konsolenanwendung ......................................... 185
decimal .................................................................... 40, 69
DecimalPlaces .............................................................. 66
default ............................................................................. 76
default.aspx ................................................................ 418
Delegate........................................................................ 205
DELETE ................................................................ 377, 388
DESC............................................................................... 386
Description.................................................................. 335
Design-Ansicht .......................................................... 482
Detailtabelle................................................................ 363
Dezimaltrennzeichen ............................................. 396
Diagramm.................................................................... 343
538
DialogResult ..................................................... 326, 331
DialogResultOk.......................................................... 333
Dictionary
generisch ................................................................. 235
Dictionary< >.............................................................. 237
Directory ...................................................................... 280
DivideByZeroException......................................... 120
Klasse........................................................................ 124
Division ........................................................................... 50
ganzer Zahlen........................................................... 43
DLL.................................................................................. 238
erstellen ................................................................... 239
nutzen ...................................................................... 241
do while ........................................................................... 95
Doppelklick .................................................................... 26
Double........................................................................... 371
double .............................................................................. 40
DrawEllipse()............................................................... 443
DrawImage() ............................................................... 448
DrawLine() ................................................................... 442
DrawPolygon()........................................................... 443
DrawRectangle()........................................................ 442
DrawString() ............................................................... 447
Dreidimensionale Grafik....................................... 494
DropDown................................................................... 110
DropDownList............................................................ 110
DropDownStyle......................................................... 110
Dynamic Link Library ............................................. 238
E
e, Exponentialschreibweise..................................... 43
E, Konstante................................................................ 297
Eigenschaft.................................................................. 188
ändern .................................................................. 18, 33
statisch..................................................................... 208
Eigenschaften-Fenster................................ 18, 21, 84
Eigenschaftsmethode ............................................. 192
Ein- und Ausgabe...................................................... 178
Eingabe ............................................................................ 63
Dialogfeld ............................................................... 321
einer Zahl ................................................................ 178
Eingabeaufforderung.............................................. 184
Eingabeformular....................................................... 423
Einzelschrittverfahren ........................................... 124
ElementHost............................................................... 503
ElementPosition ....................................................... 345
Ellipse ............................................................................ 443
else.................................................................................... 68
Enabled
Steuerelement ....................................................... 132
Timer.................................................................. 60, 468
Enter............................................................................... 129
Entwicklung
eines Programms ................................................. 115
Enumeration ................................................................ 48
Environment .............................................................. 336
Equals() ............................................................... 202, 233
Ereignis .................................................................... 19, 23
Ansicht ........................................................................ 84
mehrere....................................................................... 84
Tastatur, Maus...................................................... 142
Ereigniskette............................................................... 137
endlos ....................................................................... 139
Ereignismethode
Verweis auf ............................................................. 205
Ereignisprozedur
erzeugen (WPF) ..................................................... 484
Eulersche Zahl ............................................................ 297
Event Routing ............................................................ 484
Event Trigger .............................................................. 498
Exception Handling................................................. 119
Exception, Klasse ...................................................... 122
ExecuteNonQuery() ....................................... 378, 382
ExecuteReader() ........................................................ 377
exe-Datei ............................................................... 29, 184
Exists()
Directory.................................................................. 280
File.............................................................................. 277
Exp() ............................................................................... 297
Exponentialschreibweise ........................................ 43
eXtensible Application Markup Language ..... 481
F
f, float............................................................................... 43
false .................................................................................. 43
Farbe
Dialogfeld................................................................ 337
Fehler............................................................................. 116
logischer .................................................................. 124
Feld
Datenbank .............................................................. 358
siehe Datenfeld ..................................................... 144
Felddatentyp .............................................................. 371
Feldgröße..................................................................... 371
Feldname ..................................................................... 358
File ........................................................................ 277, 280
FileMode ...................................................................... 274
FileNames .................................................................... 331
FileStream.................................................................... 272
FileSystemEntries().................................................. 280
FillEllipse() ................................................................... 443
FillPolygon()................................................................ 443
FillRectangle() ............................................................ 442
Filter............................................................................... 331
Fixed Single.................................................................... 22
float ................................................................................... 40
Floor() ............................................................................ 297
Focus()........................................................................... 142
FolderBrowserDialog .............................................. 335
Font ............................................................. 263, 308, 338
Font.Style..................................................................... 312
FontDialog................................................................... 338
FontFamily .................................................................. 311
FontStyle.Bold............................................................ 312
FontStyle.Italic........................................................... 312
for....................................................................................... 92
foreach .......................................................................... 104
Form ................................................................................. 17
form (HTML)............................................................... 424
Form_Activated ........................................................ 131
Form_Load .................................................................. 101
Format
DateTimePicker .................................................... 269
Format()........................................................................ 262
FormatException...................................................... 120
Klasse........................................................................ 123
Formatvorlage ........................................................... 414
Formular ......................................................................... 17
aktivieren ................................................................ 131
anzeigen .................................................................. 244
Datenbank.............................................................. 369
hinzufügen ............................................................. 242
importieren ............................................................ 510
löschen ..................................................................... 510
mehrere.................................................................... 242
Start- ......................................................................... 510
wird geladen .......................................................... 101
Formularansicht .......................................................... 23
Formularbasierte Ressourcen ............................. 352
Formularvorlage ....................................................... 509
539
Index
Index
Fortschrittsbalken .................................................... 319
Frame............................................................................. 488
FromArgb()............................................................. 38, 91
FromFile()..................................................................... 447
Image........................................................................ 342
FullRowSelect
ListView.................................................................... 342
Funktion
mathematische..................................................... 296
zeichnen................................................................... 451
hexadezimal .................................................................. 43
Hide()............................................................................. 245
Hilfslinien....................................................................... 31
Hilfstabelle .................................................................. 360
Hoch............................................................................... 297
Hour............................................................................... 264
HTML ............................................................................. 413
html ............................................................................... 417
HTML-Markierung ................................................... 417
Hyperlink..................................................................... 491
G
I
GDI+ ............................................................................... 439
Generische Liste ..................................... 229, 232, 459
füllen ......................................................................... 394
leeren ........................................................................ 393
Generischer Datentyp ............................................ 228
Generisches Dictionary.......................................... 235
get-Accessor................................................................ 193
GetCreationTime() ................................................... 280
GetCurrentDirectory() ............................................ 280
GetFiles() ...................................................................... 280
GetLastAccessTime() ............................................... 280
GetLastWriteTime() ................................................. 281
GetType()...................................................................... 203
GetUpperBound() ..................................................... 152
Gleich...................................................................... 53, 384
Gleichheitszeichen.............................................. 26, 56
goto case......................................................................... 76
Grafik ................................................................... 491, 494
Graphics ....................................................................... 439
Grid................................................................................. 490
Größer als ............................................................. 53, 384
GROUP BY .................................................................... 408
GroupBox ...................................................................... 87
Gültigkeitsbereich............................................. 44, 162
ICloneable.................................................................... 221
id...................................................................................... 419
IEquatable.................................................................... 233
if.......................................................................................... 68
Image............................................................................. 342
auf Button............................................................... 315
ImageList ................................................................ 342
in Zeichnung .......................................................... 447
ImageList ..................................................................... 342
Implementation........................................................ 221
Increment
NumericUpDown .................................................... 66
Index
Datenbank..................................................... 357, 360
Datenfeld................................................................. 146
eindeutig ................................................................. 361
index.htm.................................................................... 416
IndexOf()
Array ......................................................................... 150
generische Liste .................................................... 229
Zeichenkette........................................................... 253
IndexOfAny().............................................................. 253
IndexOutOfRangeException ............................... 146
Initial Catalog............................................................. 411
InitialDirectory.......................................................... 331
InitializeComponent()............................................... 25
Inkonsistenz ............................................................... 359
INNER JOIN.................................................................. 406
input .............................................................................. 425
InputBox() ................................................................... 321
INSERT................................................................. 377, 388
Insert()
generische Liste .................................................... 229
ListBox...................................................................... 106
H
Haltepunkt .................................................................. 126
entfernen ................................................................. 126
Hauptmenü ...................................................... 303, 468
head................................................................................ 417
Headertext .................................................................. 350
Height.............................................................................. 33
540
Insert() (Forts.)
Zeichenkette........................................................... 256
Installation .................................................................. 507
Installationsprogramm.......................................... 511
Instanziierung............................................................ 191
int...................................................................................... 40
Integrität, referentielle........................................... 374
IntelliSense.................................................................. 117
Interaction................................................................... 322
Interface ....................................................................... 221
Internetanwendung ................................................ 413
Daten senden......................................................... 423
dynamisch .............................................................. 414
erstellen ................................................................... 415
Internetdatenbank................................................... 430
ändern ...................................................................... 433
Internetseite, formatieren .................................... 421
Interval............................................................................ 60
Timer......................................................................... 321
is ...................................................................................... 205
IsLoaded ....................................................................... 488
IsPostBack.................................................................... 424
Items .............................................................................. 101
ListView.................................................................... 342
J
Jahr ................................................................................. 264
JavaScript ..................................................................... 414
Join
geschachtelt ........................................................... 407
JOIN oder WHERE ..................................................... 409
K
Kalender ....................................................................... 428
Kamera.......................................................................... 496
KeyCode........................................................................ 144
KeyDown...................................................................... 143
KeyEventArgs............................................................. 143
Keys................................................................................ 144
Dictionary ............................................................... 238
KeyUp............................................................................ 143
KeyValue ...................................................................... 144
Klammer
geschweift .................................................... 24, 68, 93
Klammer (Forts.)
rund.............................................................................. 57
Klasse................................................................................ 25
abgeleitet ................................................................ 212
Definition ................................................................ 188
ermitteln......................................................... 203, 205
Name ........................................................................ 188
statisches Element............................................... 208
Klassenbibliothek
eigene ....................................................................... 238
Klassenhierarchie..................................................... 211
Kleiner als ............................................................. 53, 384
Kombinationsfeld .................................................... 110
in Menü.................................................................... 305
Kommandozeile ....................................................... 183
Aufruf ....................................................................... 184
Kommentarzeile.......................................................... 27
Konfigurationsdaten .............................................. 512
Konsolenanwendung ............................................. 176
Konstante ....................................................................... 47
integriert .................................................................... 47
Konstruktor ...................................................... 194, 215
Kontextmenü ............................................................ 312
Kontrollkästchen......................................................... 79
in Menü.................................................................... 305
Kontrollstruktur .......................................................... 67
Koordinatensystem................................................. 494
Kosinus......................................................................... 297
Kreiszahl....................................................................... 297
L
Label.................................................................................. 19
WPF............................................................................ 487
LabelStyle
Axis............................................................................ 346
Language...................................................................... 353
LargeChange
Schieberegler ............................................................ 91
LargeImageList
ListView ................................................................... 342
LastIndexOf().............................................................. 253
Laufbedingung ............................................................. 93
Laufzeitfehler ............................................................. 119
Layout ........................................................................... 482
Legends
Chart ......................................................................... 345
541
Index
Index
Length ........................................................................... 248
Licht ............................................................................... 496
LIKE................................................................................. 385
LineSegment............................................................... 493
Linie................................................................................ 442
List< > ............................................................................ 230
ListBox .......................................................................... 101
WPF............................................................................ 487
ListBoxItem
WPF............................................................................ 488
Liste
generisch ........................................................ 229, 232
Listenansicht .............................................................. 339
Listenfeld ..................................................................... 101
ListView ........................................................................ 339
ListViewItem .............................................................. 342
localhost ....................................................................... 417
Localizable ................................................................... 353
Location................................................................... 33, 58
Log()................................................................................ 297
Log10()........................................................................... 297
Logarithmus ............................................................... 297
Lokal................................................................................. 44
Lokalisierung.............................................................. 352
long................................................................................... 40
Long Integer................................................................ 371
M
m, Decimal .................................................................... 43
m:n-Relation............................................................... 363
Main() ............................................................................ 177
MainWindow.xaml .................................................. 482
MainWindow.xaml.cs ............................................. 484
Margin........................................................................... 484
Markierungssprache ............................................... 413
Mastertabelle.............................................................. 363
Material ........................................................................ 496
Math............................................................................... 296
Maus
Ereignis..................................................................... 142
MaxDate
DateTimePicker .................................................... 271
Maximum
Datenfeld................................................................. 146
Fortschrittsbalken ............................................... 321
NumericUpDown .................................................... 66
542
Maximum (Forts.)
Schieberegler ............................................................ 91
MaxLength
Textfeld ....................................................................... 63
MaxSize ........................................................................ 338
Mehrfachauswahl..................................................... 109
Steuerelemente ........................................................ 31
switch .......................................................................... 75
Mehrfachvererbung ................................................ 221
Mehrsprachigkeit ..................................................... 352
Menü ............................................................................. 303
MenuStrip.................................................................... 303
MeshGeometry3D.................................................... 496
Message ........................................................................ 122
MessageBox................................................................ 325
MessageBoxButtons................................................ 326
MessageBoxIcon....................................................... 326
Methode ............................................................. 161, 188
gekapselt .................................................................... 25
mit Rückgabewert ............................................... 167
ohne Ereignis ............................................................ 89
ohne Rückgabewert ............................................... 25
statisch..................................................................... 208
überladen ................................................................ 196
verlassen.................................................................. 161
Microsoft Access Database Engine.................... 375
Microsoft.ACE.OLEDB.12.0 .................................... 376
Millisecond ................................................................. 264
Millisekunde............................................................... 264
MinDate
DateTimePicker .................................................... 271
Minimum
Datenfeld................................................................. 146
Fortschrittsbalken ............................................... 321
NumericUpDown .................................................... 66
Schieberegler ............................................................ 91
MinSize ......................................................................... 338
Minute .......................................................................... 264
Modal ............................................................................ 244
Modularisierung................................................ 90, 160
Modulo ............................................................................ 50
Monat............................................................................ 264
Month ........................................................................... 264
MouseDown ............................................................... 144
MouseEventArgs....................................................... 144
MouseUp...................................................................... 144
MoveToNextAttribute()
XmlTextReader ..................................................... 291
MS Access..................................................................... 368
2016 ........................................................................... 370
MultiExtended........................................................... 109
MultiLine
Textfeld ....................................................................... 63
Multiplikation.............................................................. 50
MultiSelect .................................................................. 331
MySQL ........................................................................... 410
MySQL.Data ................................................................ 410
MySqlClient................................................................. 411
MySqlCommand....................................................... 411
MySqlConnection..................................................... 411
MySqlDataReader ..................................................... 411
N
Nachkommastellen ................................................... 43
NumericUpDown .................................................... 66
Name ............................................................................... 21
Namenskonvention ........................................... 20, 36
Namensraum ...................................................... 25, 198
namespace............................................................ 25, 198
NameValueCollection............................................. 514
NavigationWindow.................................................. 489
NET-Treiber ................................................................. 410
new ................................................................ 35, 146, 191
new line .......................................................................... 37
Next()............................................................................... 96
NextDouble().............................................................. 158
Nicht-Operator ............................................................ 54
NodeType
XmlTextReader ..................................................... 291
NOT ................................................................................ 384
Now ................................................................................ 264
null ................................................................................. 204
NumericUpDown ....................................................... 66
O
object ................................................................... 196, 202
Objekt ............................................................................ 191
erzeugen .................................................................. 194
identisch .................................................................. 202
initialisieren ........................................................... 207
Verweis auf ............................................................. 145
Objektorientierung.................................................. 187
Objektverweis ............................................................ 153
dasselbe Objekt..................................................... 201
vergleichen ............................................................. 382
Oder-Operator .............................................................. 54
Öffnungsmodus........................................................ 274
OleDb............................................................................. 377
OleDbCommand....................................................... 377
OleDbConnection..................................................... 376
OleDbReader .............................................................. 378
ON................................................................................... 406
OnSelectionChanged .............................................. 430
Open .............................................................................. 274
Open()
OleDbConnection ................................................ 377
OpenFileDialog.......................................................... 331
Operator.......................................................................... 50
bitweise....................................................................... 55
für Berechnungen ................................................... 50
logisch ............................................................... 54, 384
Priorität ...................................................................... 56
Rangfolge................................................................... 56
ternär........................................................................... 71
Vergleich........................................................... 53, 201
Zuweisung ................................................................. 56
option............................................................................ 427
Optionsschaltfläche ................................................... 82
mehrere Gruppen.................................................... 86
OR ................................................................................... 384
ORDER BY .................................................................... 386
out .................................................................................. 163
override ........................................................................ 197
P
Page...................................................................... 419, 490
Page_Load ................................................................... 419
Page-Direktive ........................................................... 419
Paint-Ereignis............................................................. 449
PaintEventArgs.......................................................... 451
Panel ....................................................................... 58, 455
Parameter .................................................................... 161
beliebig viele .......................................................... 172
benannt ................................................................... 170
optional ................................................................... 169
params .......................................................................... 172
partial ............................................................................... 25
543
Index
Index
PasswordChar
Textfeld ....................................................................... 63
Passwortabfrage.......................................................... 63
Path ................................................................................ 493
PathFigure ................................................................... 491
PathGeometry ........................................................... 491
Peek() ............................................................................. 274
Pen.................................................................................. 439
Pfadangabe.................................................................. 279
Pfadgeometrie ........................................................... 491
PI...................................................................................... 297
Pinsel ............................................................................. 439
Farbe ......................................................................... 445
Pixel ................................................................................. 33
Platzhalter ................................................................... 385
Point.............................................................. 35, 443, 452
Points
Series ......................................................................... 345
Polygon......................................................................... 443
Polymorphie............................................................... 217
Position
Legends .................................................................... 345
Pow() .............................................................................. 297
PresentationCore...................................................... 503
PresentationFramework........................................ 503
Primärindex................................................................ 361
Primärschlüssel erstellen ...................................... 372
Print()
Printing .................................................................... 347
Printing
Chart ......................................................................... 346
PrintingManager
Chart ......................................................................... 346
PrintPreview()
Printing .................................................................... 347
private ................................................... 25, 44, 163, 190
Program.cs................................................................... 177
Programm
beenden....................................................................... 28
starten ......................................................................... 28
testen ........................................................................... 29
Programmentwicklung.......................................... 115
Programmierung
clientseitig .............................................................. 414
ereignisgesteuert.................................................. 137
serverseitig ............................................................. 414
ProgressBar ................................................................. 319
544
Projekt
Eigenschaften........................................................ 375
neu (WPF) ................................................................ 481
öffnen .......................................................................... 29
schließen..................................................................... 29
speichern .................................................................... 23
Verweis hinzufügen ............................................ 410
Projektmappen-Explorer.......................................... 18
Projektressourcen .................................................... 352
Projektvorlage............................................................ 510
Properties Window ..................................................... 18
Property ....................................................................... 193
protected...................................................................... 215
Provider........................................................................ 376
public..................................................... 25, 44, 190, 215
Q
Queue ............................................................................ 228
R
RadioButton .................................................................. 82
Internetformular.................................................. 425
Random ........................................................................... 96
Rangfolge ........................................................................ 52
Read()............................................................................. 380
XmlTextReader ..................................................... 291
Reader ........................................................................... 378
ReadLine().......................................................... 178, 274
ReadOnly
Textfeld .................................................................... 314
Rechenoperator............................................................ 50
Rechteck ....................................................................... 442
Rectangle...................................................................... 442
Redundanz .................................................................. 359
ref................................................................. 160, 163, 200
ReferenceEquals() ..................................................... 382
Referenz ....................................................................... 200
Referenztyp................................................................. 200
Registrierung.............................................................. 508
Rekursion..................................................................... 173
Relation ........................................................................ 360
erstellen ................................................................... 373
Relational..................................................................... 357
Remove()
Controls ................................................................... 466
generische Liste..................................................... 229
Zeichenkette........................................................... 258
RemoveAt()
generische Liste............................................ 229, 477
ListBox...................................................................... 106
Replace()
Zeichenkette.................................................. 261, 396
Resize()
Array ......................................................................... 158
Ressource ........................................................... 352, 498
resx-Datei .................................................................... 353
return ............................................................................ 161
mit Rückgabewert ............................................... 167
Ringtausch................................................................... 164
RootFolder................................................................... 335
Rotationstransformation ...................................... 498
Round() ......................................................................... 297
RowIndex..................................................................... 352
Rows..................................................................... 349, 351
Rückgabewert............................................................. 167
runat .............................................................................. 419
runden .......................................................................... 297
S
SaveFileDialog............................................................ 333
SaveImage()
Chart ......................................................................... 347
Schalter ........................................................................... 79
Schieberegler................................................................ 90
Schleife............................................................................ 92
endlose ................................................................. 95, 98
geschachtelt ........................................................... 152
mit Bedingung ......................................................... 96
nächster Durchlauf ................................................ 93
verlassen..................................................................... 93
Schleifenvariable ........................................................ 92
Schnittstelle ................................................................ 221
Schrift ............................................................................ 308
auswählen............................................................... 338
Schriftart ...................................................................... 308
nicht proportional ............................................... 262
Schriftgröße ................................................................ 310
Schriftstil...................................................................... 311
Schrittweite
NumericUpDown .................................................... 66
script.............................................................................. 419
Scrollbalken ................................................................ 101
ScrollBars
Textfeld ............................................................. 63, 315
Second........................................................................... 264
Seiten, in Frames ...................................................... 488
Sekundärindex .......................................................... 361
Sekunde........................................................................ 264
SELECT........................................................ 377, 379, 383
select.............................................................................. 427
SelectAll() ..................................................................... 142
Selected
DataGridView ....................................................... 349
SelectedDate............................................................... 429
SelectedIndex................................................... 102, 311
SelectedIndexChanged .......................................... 104
SelectedIndices.......................................................... 109
SelectedItem............................................................... 102
SelectedItems............................................................. 109
SelectedPath ............................................................... 335
SelectionMode................................................. 109, 111
Semikolon ................................................................... 251
Separator...................................................................... 305
Series
Chart ......................................................................... 345
SeriesChartType ........................................................ 345
Serversteuerelement..................................... 421, 428
set-Accessor ................................................................ 193
SetCurrentDirectory()............................................. 280
short.................................................................................. 40
Show()............................................................................ 325
ShowColor ................................................................... 338
ShowDialog() .................................................... 244, 331
ShowNewFolderButton.......................................... 335
Simple ........................................................................... 110
Sin() ................................................................................ 297
Single ............................................................................. 371
Sinus .............................................................................. 297
Size ................................................................... 33, 35, 309
Slider
WPF............................................................................ 487
sln-Datei .......................................................................... 29
SmallChange
Schieberegler ............................................................ 92
SmallImageList
ListView ................................................................... 342
545
Index
Index
SolidBrush ................................................................... 441
Solution Explorer ....................................................... 18
Sort() .............................................................................. 150
SpecialFolder .............................................................. 336
Spin-Button................................................................. 271
Split().............................................................................. 251
SQL.................................................................................. 377
Großschrift.............................................................. 377
typische Fehler ...................................................... 388
Sqrt() .............................................................................. 297
Stack............................................................................... 228
StackPanel ................................................................... 483
Startausdruck ............................................................... 93
Startformular ............................................................. 510
Startmethode ............................................................. 177
Startparameter .......................................................... 183
Startzustand ................................................................. 22
static............................................................................... 209
Statusleiste .................................................................. 319
StatusStrip ................................................................... 319
Steuerelement ........................................................... 485
Abstand einstellen .................................................. 32
aktivieren ......................................................... 60, 132
Auflistung ............................................................... 246
ausrichten .................................................................. 31
auswählen.................................................................. 20
einfügen...................................................................... 19
Größe ........................................................................... 33
Hintergrundfarbe ................................................... 37
Kontextmenü ........................................................ 312
kopieren ...................................................................... 32
Liste von................................................................... 461
markieren................................................................... 31
Position ................................................................ 33, 58
sichtbar .................................................................... 132
zur Laufzeit erzeugen ................................ 205, 455
zur Laufzeit löschen ................................... 455, 466
Stift ................................................................................. 439
Dicke.......................................................................... 445
Farbe ......................................................................... 445
Storyboard................................................................... 498
StreamReader............................................................. 272
StreamWriter.............................................................. 274
String ............................................................................. 247
string................................................................................ 41
struct.............................................................................. 225
Structured Query Language ................................. 377
Struktur ........................................................................ 224
546
Stunde........................................................................... 264
Style ..................................................................... 309, 311
SubItems
ListViewItem.......................................................... 342
submit........................................................................... 425
Substring()................................................................... 259
Subtract() ..................................................................... 269
Subtraktion .................................................................... 50
SUM()............................................................................. 408
Summe berechnen...................................................... 98
switch ............................................................................... 75
Symbolleiste............................................................... 315
Syntaxfehler ............................................................... 117
System.Collections.Specialized........................... 514
System.Data.OleDb........................................ 377, 432
System.Drawing........................................................ 458
System.Globalization.............................................. 354
System.IO.................................................. 272, 273, 471
System.Resources..................................................... 356
System.Text ................................................................ 290
System.Threading .................................................... 354
System.Xaml............................................................... 503
System.Xml................................................................. 289
Systemton ................................................ 326, 329, 330
T
Tabelle
darstellen ................................................................ 347
Datenbank.............................................................. 368
Tabellenausgabe ....................................................... 262
Tabellenentwurf........................................................ 371
TabIndex ...................................................................... 135
TabStop......................................................................... 135
Tag der Woche ........................................................... 264
Tag des Jahres............................................................. 264
Tag des Monats.......................................................... 264
Tan() ............................................................................... 297
Tangens ........................................................................ 297
Tastatur
Ereignis .................................................................... 142
Tastaturbedienung .................................................. 135
Taste
Alt............................................................................... 136
F11 ............................................................................... 124
F5 ................................................................................... 28
F9................................................................................ 126
Tasten-Key................................................................... 498
Tastenkombination
für Steuerelement ................................................ 136
Strg C......................................................................... 181
Strg F5 ....................................................................... 178
Teilzeichenkette........................................................ 259
Template
Formular.................................................................. 509
Projekt ...................................................................... 510
Ternärer Operator ...................................................... 71
Tetris .............................................................................. 455
Text
Eigenschaft ............................................... 21, 63, 249
in Zeichnung .......................................................... 447
umwandeln ............................................................... 64
verketten .................................................................... 55
TextBox
in Menü.................................................................... 305
WPF............................................................................ 487
TextChanged ........................................... 133, 257, 311
Textfeld........................................................................... 63
alles auswählen .................................................... 142
Änderung ................................................................ 133
kopieren ...................................................................... 63
koppeln .................................................................... 141
mehrzeilig .................................................................. 63
ReadOnly................................................................. 314
this............................................................... 190, 196, 244
TickFrequency
Schieberegler............................................................. 92
TimeOfDay .................................................................. 264
Timer ............................................................ 59, 320, 455
TimeSpan ........................................................... 266, 267
Title................................................................................. 331
title (HTML) ................................................................. 417
TitleAlignment
Axis ............................................................................ 346
Today ............................................................................. 264
TodayDayStyle........................................................... 430
ToDouble()..................................................................... 64
ToInt32() ............................................................. 179, 324
Toolbox........................................................................... 17
ToolStrip....................................................................... 315
ToolStripComboBox................................................ 318
ToShortDateString() ...................................... 394, 429
ToString() ..................................................................... 196
Transformation ......................................................... 498
Trennzeichen ............................................................. 251
Trim()............................................................................. 250
TrimEnd()..................................................................... 250
TrimStart()................................................................... 250
true .................................................................................... 43
Truncate() .................................................................... 297
try.................................................................................... 122
Typ ermitteln ................................................... 203, 205
Type Converter.......................................................... 483
typeof ............................................................................ 204
U
Übergabe
Ausgabeparameter ............................................. 163
per Referenz .................................................. 163, 200
per Wert ................................................................... 162
Überladen .................................................................... 196
Überschreiben ........................................................... 197
Überwachungsfenster ............................................ 126
Uhrzeit .......................................................................... 264
berechnen ............................................................... 266
UID ................................................................................. 411
Umwandlung
in ganze Zahl ......................................................... 324
in Zahl.......................................................................... 64
Und-Operator................................................................ 54
Ungleich ................................................................ 53, 384
Unterformular ........................................................... 242
Untermenü ................................................................. 303
Unterstrich (Platzhalter)........................................ 385
UPDATE ..................................................... 377, 382, 387
Up-Down-Button ...................................................... 271
using .................................................... 25, 199, 273, 377
UTF-8 ............................................................................. 417
V
Value
DataGridView ....................................................... 351
DateTimePicker .................................................... 271
Fortschrittsbalken ............................................... 321
NumericUpDown .................................................... 66
Schieberegler ............................................................ 91
Textfeld (HTML).................................................... 424
value
Accessor ................................................................... 193
547
Index
Index
ValueChanged
DateTimePicker .................................................... 271
NumericUpDown .................................................... 67
Schieberegler............................................................. 91
Values
Dictionary ............................................................... 238
VALUES (SQL) ............................................................. 388
Variable........................................................................... 39
ausblenden ................................................................ 45
Gültigkeitsbereich................................................... 39
Kontrolle.................................................................. 126
Name............................................................................ 39
öffentlich .................................................................... 44
Startwert..................................................................... 46
Verbindung
Datenbank .............................................................. 376
Vererbung.................................................................... 211
Vergleichsoperator .................................................. 384
Verkettung .................................................................. 198
Verknüpfung .............................................................. 360
erstellen ................................................................... 373
Verweis ......................................................................... 191
auf Ereignismethode .......................................... 205
auf Nichts ................................................................ 204
umwandeln ................................................... 153, 246
Verweistyp................................................................... 163
Verzeichnis
Dateiliste ................................................................. 280
ermitteln.................................................................. 280
Existenz.................................................................... 280
Information über ................................................. 280
Liste ........................................................................... 280
setzen........................................................................ 280
wählen, Dialog ...................................................... 335
wechseln .................................................................. 285
Verzweigung................................................................. 67
Vieleck........................................................................... 443
Vielgestaltigkeit ........................................................ 217
View
ListView.................................................................... 339
Visible............................................................................ 132
Visual Studio Community 2017 ............................ 16
void................................................................................... 25
Vokabel-Lernprogramm ........................................ 468
Vorlage
WPF............................................................................ 481
548
W
Wahrheitswert .............................................................. 81
Webserver.................................................................... 414
lokaler....................................................................... 415
WeekendDayStyle .................................................... 430
Werkzeugkasten........................................................... 17
Wertebereich................................................................. 43
Werttyp............................................................... 163, 200
Struktur.................................................................... 224
WHERE .......................................................................... 383
while ................................................................................. 95
Width................................................................................ 33
Zeichenstift............................................................. 445
Window ........................................................................ 483
Windows Forms in WPF......................................... 502
Windows Presentation Foundation.................. 481
Windows 10.......................................................... 16, 184
Windows 7 ............................................................ 16, 184
Windows 8............................................................ 16, 184
WindowsBase ............................................................. 503
WindowsFormsHost ............................................... 502
WindowsFormsIntegration.................................. 503
Wochentag .................................................................. 264
Wörterbuch................................................................. 235
WPF ................................................................................ 481
WPF in Windows Forms......................................... 503
WrapPanel
WPF............................................................................ 486
Write() ................................................................. 178, 276
WriteAttributeString()............................................ 290
WriteEndElement() .................................................. 290
WriteLine()................................................ 178, 182, 276
WriteStartDocument()............................................ 290
WriteStartElement() ................................................ 290
Wurzel ........................................................................... 297
XmlNodeType ............................................................
xmlns.............................................................................
XmlTextReader..........................................................
XmlTextWriter...........................................................
291
483
291
290
Y
Y (Maus) ........................................................................ 144
Y, Location ..................................................................... 33
Year................................................................................. 264
Z
Zahlenauswahlfeld............................................ 66, 257
Zeichen, prüfen.......................................................... 274
Zeichenkette ............................................................... 247
durchsuchen........................................................... 253
einfügen................................................................... 256
ersetzen.................................................................... 261
Index ......................................................................... 250
Zeichenkette (Forts.)
Länge ........................................................................ 248
löschen ..................................................................... 258
mit Backslash ........................................................ 278
Teilzeichenkette.................................................... 259
trimmen................................................................... 250
zerlegen.................................................................... 251
Zeichenkodierung .................................................... 417
Zeichnen ...................................................................... 439
dauerhaft ................................................................ 449
Zeichnung
löschen ..................................................................... 445
Zeile
lesen .......................................................................... 274
Zeilenumbruch............................................................. 37
Regeln .......................................................................... 30
Zeit.................................................................................. 264
Zeitgeber ......................................................................... 59
Zeitintervall ................................................................ 267
Zufallsgenerator.............................. 96, 146, 455, 468
Zuweisung ...................................................................... 26
Zweidimensionale Grafik ...................................... 491
X
X (Maus)........................................................................ 144
X, Location...................................................................... 33
x:Class ........................................................................... 483
x:Name ......................................................................... 484
XAML ............................................................................. 481
mit Programmiercode ....................................... 482
XML-Datei.......................................................... 287, 512
XML-Knoten ............................................................... 288
549
Wissen, wie’s geht.
Thomas Theis ist Diplom-Ingenieur für Technische Informatik
und hat langjährige Erfahrung als IT-Dozent, unter anderem an
der Fachhochschule Aachen. Er leitet Schulungen zu C/C++, Visual C#, Visual Basic sowie Webprogrammierung und ist Autor
zahlreicher erfolgreicher Fachbücher. Einsteiger und Neulinge
schätzen seine Fähigkeit, auch komplizierte Sachverhalte leicht
verständlich zu machen und dabei den Spaß am Programmieren
nie aus den Augen zu verlieren.
Thomas Theis
Einstieg in C# mit Visual Studio 2017 –
Ideal für Programmiereinsteiger
549 Seiten, broschiert, 5. Auflage 2017
29,90 Euro, ISBN 978-3-8362-4493-0
www.rheinwerk-verlag.de/4351
Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen hat. Sie dürfen sie gerne empfehlen und weitergeben, allerdings nur vollständig mit allen Seiten. Bitte beachten
Sie, dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der
E-Book-Fassung des vorgestellten Buches abweichen können. Diese Leseprobe ist in
all ihren Teilen urheberrechtlich geschützt. Alle Nutzungs- und Verwertungsrechte
liegen beim Autor und beim Verlag.
Teilen Sie Ihre Leseerfahrung mit uns!
Herunterladen