einstieg in c# mit visual studio 2017 – ideal für ... · pdf fileleseprobe wenn sie...

47
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. 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 »Visual Studio 2017 installieren« »Variablen, Operatoren, Steuerelemente« »Lösungen der Übungsaufgaben« Inhaltsverzeichnis Index Der Autor Leseprobe weiterempfehlen Wissen, wie’s geht.

Upload: trinhtuyen

Post on 06-Feb-2018

223 views

Category:

Documents


4 download

TRANSCRIPT

LeseprobeWenn Sie auf schnelle und praktische Weise lernen moumlchten wie Sie Windows-Programme mit C entwickeln sind Sie hier genau richtig Dieser Buchauszug zeigt wie Sie Visual Studio installieren und fuumlr Ihre Projekte einrichten Auszligerdem machen Sie sich mit Variablen und Operatoren vertraut

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

raquoVisual Studio 2017 installierenlaquo raquoVariablen Operatoren Steuerelementelaquo raquoLoumlsungen der Uumlbungsaufgabenlaquo

Inhaltsverzeichnis

Index

Der Autor

Leseprobe weiterempfehlen

Wissen wiersquos geht

15

1Kapitel 1

Einfuumlhrung

In diesem Kapitel erlernen Sie anhand eines ersten Projekts den Umgang

mit der Entwicklungsumgebung und den Steuerelementen Anschlieszligend

werden Sie in der Lage sein Ihr erstes eigenes Windows-Programm zu

erstellen

CC ist eine objektorientierte Programmiersprache die von Microsoft im

Zusammenhang mit dem NET Framework eingefuumlhrt wurde Mithilfe der

Entwicklungsumgebung Visual Studio 2017 koumlnnen 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 Verfuumlgung

11 Aufbau dieses Buchs

BeispieleDieses Buch vermittelt Ihnen zunaumlchst einen einfachen Einstieg in die Pro-

grammierung mit C und Visual Studio 2017 Die Bearbeitung der Beispiele

und das selbststaumlndige Loumlsen der vorliegenden Uumlbungsaufgaben helfen da-

bei Dadurch werden Sie schnell erste Erfolgserlebnisse haben die Sie zum

Weitermachen motivieren In spaumlteren Kapiteln werden Ihnen anschlie-

szligend auch komplexere Themen vermittelt

GrundlagenVon Anfang an wird mit anschaulichen Windows-Anwendungen gearbei-

tet Die Grundlagen der Programmiersprache und die Standardelemente

einer Windows-Anwendung wie Sie sie bereits von anderen Windows-Pro-

grammen her kennen werden gemeinsam vermittelt Die Anschaulichkeit

einer Windows-Anwendung hilft dabei den eher theoretischen Hinter-

grund der Programmiersprache leichter zu verstehen

4493book Seite 15 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

16

12 Visual Studio 2017

Community-Version Fuumlr dieses Buch wird die frei verfuumlgbare Entwicklungsumgebung Visual

Studio Community 2017 eingesetzt Sie koumlnnen sie unter Windows 7 bis ein-

schlieszliglich Windows 10 nutzen Diese Version von Visual Studio koumlnnen

Sie bei Microsoft herunterladen (wwwvisualstudiocomde-de) und auf Ih-

rem 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 ausfuumlhrbaren Programme einen Debugger zur Fehler-

suche und vieles mehr

Noch eine Anmerkung in eigener Sache Fuumlr die Hilfe bei der Erstellung die-

ses Buchs bedanke ich mich beim Team des Rheinwerk Verlags besonders

bei Anne Scheibe

Thomas Theis

13 Mein erstes Windows-Programm

Anhand eines ersten Projekts werden Sie nun die verschiedenen Schritte

durchlaufen die zur Erstellung eines einfachen Programms mit C in Visu-

al Studio notwendig sind Das Programm soll nach dem Aufruf zunaumlchst so

aussehen wie in Abbildung 11 gezeigt

Abbildung 11 Erstes Programm nach dem Aufruf

Nach Betaumltigung des Buttons Hallo soll sich der Text in der obersten Zeile

entsprechend veraumlndern (siehe Abbildung 12)

4493book Seite 16 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

17

1

Abbildung 12 Nach einem Klick auf den Button raquoHallolaquo

14 Visual Studio-Entwicklungsumgebung

Waumlhrend der Projekterstellung werden Sie die Visual Studio-Entwicklungs-

umgebung Schritt fuumlr Schritt kennenlernen

141 Ein neues Projekt

Nach dem Aufruf des Programms Visual Studio Community 2017 muumlssen

Sie zur Erstellung eines neuen C-Projekts den Menuumlpunkt Datei bull Neu bull

Projekt ausfuumlhren Anschlieszligend waumlhlen Sie in der Kategorie Instal-

liert bull Vorlagen bull Visual C die Vorlage Windows Forms-App aus Als

Projektname bietet die Entwicklungsumgebung den Namen Windows-

FormsApp1 an dieser sollte geaumlndert werden zum Beispiel in MeinErstes

Nach Betaumltigung der Schaltflaumlche OK erscheinen nun einige Elemente der

Entwicklungsumgebung Folgende sind besonders wichtig

Form Das Benutzerformular (engl Form) enthaumllt die Oberflaumlche fuumlr den Benut-

zer des Programms (siehe Abbildung 13)

Abbildung 13 Benutzerformular

Toolbox Der Werkzeugkasten (engl Toolbox) enthaumllt die Steuerelemente fuumlr

den Benutzer mit denen er den Ablauf des Programms steuern kann Sie

4493book Seite 17 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

18

werden vom Programmentwickler in das Formular eingefuumlgt (siehe Ab-

bildung 14) Sollten in der Toolbox keine Steuerelemente angezeigt wer-

den klicken Sie einmal auf das Benutzerformular und anschlieszligend wie-

der auf die Toolbox Weitere Registerkarten zum Beispiel Server-

Explorer und Datenquellen werden nicht benoumltigt und koumlnnen je-

weils uumlber das Kreuz oben rechts ausgeblendet werden

Abbildung 14 Der raquoWerkzeugkastenlaquo mit verschiedenen

Kategorien von Steuerelementen

Eigenschaften-

Fenster

Das Eigenschaften-Fenster (engl Properties Window) dient dem An-

zeigen und Aumlndern der Eigenschaften von Steuerelementen innerhalb

des Formulars durch den Programmentwickler (siehe Abbildung 15) Ich

empfehle Ihnen sich die Eigenschaften in alphabetischer Reihenfolge

anzeigen zu lassen Betaumltigen Sie dazu einfach unter Form1 das zweite

Symbol von links

Abbildung 15 Eigenschaften-Fenster

Projektmappen-

Explorer

Der Projektmappen-Explorer (engl Solution Explorer) zeigt das geoumlff-

nete Projekt und die darin vorhandenen Elemente (siehe Abbildung 16)

4493book Seite 18 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

19

1

Abbildung 16 Projektmappen-Explorer

Elemente anzeigenSollte der Werkzeugkasten das Eigenschaften-Fenster oder der Pro-

jektmappen-Explorer nicht angezeigt werden koumlnnen Sie das betreffen-

de Element uumlber das Menuuml Ansicht einblenden Ist das Formular nicht

sichtbar blenden Sie es einfach uumlber einen Doppelklick auf den Namen

(Form1cs) im Projektmappen-Explorer ein Sollten die Eigenschaften

eines Steuerelements nicht im bereits sichtbaren Eigenschaften-Fenster

angezeigt werden markieren Sie zunaumlchst den Namen der Formulardatei

(Form1cs) im Projektmappen-Explorer und anschlieszligend das betref-

fende Steuerelement

Anfangs schreiben Sie nur einfache Programme mit wenigen Elementen

daher benoumltigen Sie den Projektmappen-Explorer jetzt noch nicht Es

empfiehlt sich das Eigenschaften-Fenster nach oben zu vergroumlszligern

142 Einfuumlgen von Steuerelementen

Label ButtonZunaumlchst sollen drei Steuerelemente in das Formular eingefuumlgt werden

ein Bezeichnungsfeld (Label) und zwei Befehlsschaltflaumlchen (Buttons) Ein

Bezeichnungsfeld dient im Allgemeinen dazu feste oder veraumlnderliche

Texte auf der Benutzeroberflaumlche anzuzeigen In diesem Programm soll

das Label einen Text anzeigen Ein Button dient zum Starten bestimmter

Programmteile oder allgemeiner ausgedruumlckt zum Ausloumlsen von Ereignis-

sen In diesem Programm sollen die Buttons dazu dienen den Text anzu-

zeigen bzw das Programm zu beenden

Allgemeine

Steuerelemente

Um ein Steuerelement einzufuumlgen ziehen Sie es mithilfe der Maus aus

dem Werkzeugkasten an die gewuumlnschte Stelle im Formular Alle Steuer-

elemente finden sich im Werkzeugkasten unter Alle Windows Forms

4493book Seite 19 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

20

Uumlbersichtlicher ist jedoch der Zugriff uumlber Allgemeine Steuerelemente

(engl Common Controls) siehe Abbildung 17

Abbildung 17 raquoAllgemeine Steuerelementelaquo im raquoWerkzeugkastenlaquo

Steuerelement

auswaumlhlen

Ein Doppelklick auf ein Steuerelement im Werkzeugkasten fuumlgt es

ebenfalls in die Form ein Position und Groumlszlige des Elements koumlnnen an-

schlieszligend noch veraumlndert werden Dazu waumlhlen Sie das betreffende

Steuerelement vorher durch Anklicken aus (siehe Abbildung 18) Ein uumlber-

fluumlssiges Steuerelement koumlnnen Sie durch Auswaumlhlen und Druumlcken der

Taste (Entf) entfernen

Abbildung 18 Ausgewaumlhlter Button

Die Groumlszlige und andere Eigenschaften des Formulars selbst koumlnnen Sie

ebenfalls veraumlndern Dazu waumlhlen Sie es vorher durch Anklicken einer frei-

en Stelle im Formular aus

143 Arbeiten mit dem Eigenschaften-Fenster

Die eingefuumlgten Steuerelemente haben zunaumlchst einheitliche Namen und

Aufschriften diese sollten Sie allerdings zur einfacheren Programment-

wicklung aumlndern Es gibt bestimmte Namenskonventionen die die Les-

barkeit erleichtern Die Namen beinhalten den Typ (mit drei Buchstaben

abgekuumlrzt) und die Aufgabe des Steuerelements (jeweils mit groszligem An-

4493book Seite 20 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

21

1fangsbuchstaben) Aus den Namen der Steuerelemente ergeben sich auch

die Namen der sogenannten Ereignisprozeduren ebenfalls mit groszligem

Anfangsbuchstaben siehe Abschnitt 145 Seit Visual Studio 2017 wird staumlr-

ker auf die Einhaltung der Namenskonventionen geachtet

Cmd Txt Lbl Ein Button (eigentlich Command Button) der die Anzeige der Zeit ausloumlsen

soll wird beispielsweise mit CmdZeit bezeichnet Weitere Vorsilben sind Txt

(TextfeldTextBox) Lbl (BezeichnungsfeldLabel) Opt (Optionsschalt-

flaumlcheRadioButton) Frm (FormularForm) und Chk (Kontrollkaumlstchen

CheckBox)

Zur Aumlnderung des Namens eines Steuerelements muss es zunaumlchst ausge-

waumlhlt werden Das koumlnnen Sie entweder durch Anklicken des Steuerele-

ments auf dem Formular oder durch Auswahl desselben aus der Liste am

oberen Ende des Eigenschaften-Fensters tun

Eigenschaften-

Fenster

Im Eigenschaften-Fenster werden alle Eigenschaften des ausgewaumlhlten

Steuerelements angezeigt Die Liste ist zweispaltig In der linken Spalte

steht der Name der Eigenschaft in der rechten ihr aktueller Wert Die Eigen-

schaft (Name) steht am Anfang der Liste der Eigenschaften Die betreffende

Zeile waumlhlen Sie durch Anklicken aus und geben hier den neuen Namen

ein Nach Bestaumltigung mit der Taste (cent) ist die Eigenschaft geaumlndert (siehe

Abbildung 19)

Abbildung 19 Button nach der Namensaumlnderung

TextDie Aufschrift von Buttons Labels und Formularen ist in der Eigenschaft

Text angegeben Sobald diese Eigenschaft veraumlndert wird erscheint die ver-

aumlnderte Aufschrift in dem betreffenden Steuerelement Auch der Name

und die Aufschrift des Formulars sollten geaumlndert werden Im Folgenden

sind die gewuumlnschten Eigenschaften fuumlr die Steuerelemente dieses Pro-

gramms in Tabellenform angegeben siehe Tabelle 11

4493book Seite 21 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

22

Startzustand Hiermit legen Sie den Startzustand fest also die Eigenschaften welche die

Steuerelemente zu Beginn des Programms bzw eventuell waumlhrend des ge-

samten Programms haben sollen Viele Eigenschaften koumlnnen Sie auch

noch waumlhrend der Laufzeit des Programms durch den Programmcode ver-

aumlndern

Bei einem Label ergibt die Einstellung der Eigenschaft BorderStyle auf

FixedSingle einen Rahmen Zur Aumlnderung auf FixedSingle klappen Sie die

Liste bei der Eigenschaft auf und waumlhlen den betreffenden Eintrag aus sie-

he Abbildung 110 Zur Aumlnderung einiger Eigenschaften muumlssen Sie gegebe-

nenfalls ein Dialogfeld aufrufen

Abbildung 110 Label nach der Aumlnderung von Name und BorderStyle

Typ Eigenschaft Einstellung

Formular Text Mein erstes Programm

Button Name CmdHallo

Text Hallo

Button Name CmdEnde

Text Ende

Label Name LblAnzeige

Text (leer)

BorderStyle FixedSingle

Tabelle 11 Steuerelemente mit Eigenschaften

4493book Seite 22 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

23

1Im Label soll zunaumlchst der Text (leer) erscheinen Hierzu waumlhlen Sie den

vorhandenen Text durch Anklicken aus und aumlndern ihn

Liste der

Steuerelemente

Sie finden alle in diesem Formular vorhandenen Steuerelemente in der Lis-

te die sich am oberen Ende des Eigenschaften-Fensters oumlffnen laumlsst

Dabei zeigt sich ein Vorteil der einheitlichen Namensvergabe Die Steuer-

elemente des gleichen Typs stehen immer direkt untereinander

144 Speichern eines Projekts

Alles speichernDie Daten eines C-Projekts werden innerhalb von Visual Studio in ver-

schiedenen Dateien gespeichert Zum Speichern des gesamten Projekts

verwenden Sie den Menuumlpunkt Datei bull Alles Speichern Diesen Vorgang

sollten Sie in regelmaumlszligigen Abstaumlnden durchfuumlhren damit keine Aumlnderun-

gen verloren gehen koumlnnen

Die in diesem Skript angegebenen Namen erleichtern eine schnelle und

eindeutige Orientierung und das spaumltere Auffinden von aumllteren Pro-

grammen

145 Das Codefenster

EreignisDer Ablauf eines Windows-Programms wird im Wesentlichen durch das

Ausloumlsen von Ereignissen durch den Benutzer gesteuert Er loumlst z B die

Anzeige des Texts Hallo aus indem er auf den Button Hallo klickt Der

Entwickler muss dafuumlr sorgen dass aufgrund dieses Ereignisses auch tat-

saumlchlich der gewuumlnschte 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

EreignismethodeZum Schreiben einer Ereignismethode fuumlhren Sie am besten einen Dop-

pelklick auf dem betreffenden Steuerelement aus Daraufhin erscheint das

Codefenster Zwischen der Formularansicht und der Codeansicht koumlnnen

Sie anschlieszligend uumlber die Menuumlpunkte Ansicht bull Code bzw Ansicht bull

Designer hin- und herschalten Das ist auch uumlber die Registerkarten ober-

halb des Formulars bzw des Codefensters moumlglich (siehe Abbildung 111)

4493book Seite 23 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

24

Abbildung 111 Registerkarten

Nach erfolgtem Doppelklick auf den Button Hallo erscheinen im Code-

fenster die folgenden Eintraumlge

using Systemusing SystemWindowsForms

namespace MeinErstes

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdHallo_Click(object sender EventArgs e)

Listing 11 Projekt raquoMeinErsteslaquo Button raquoHallolaquo ohne Code

Zur Erlaumluterung

Grundsaumltzlich gilt dass Sie sich nicht von der Vielzahl der automatisch

erzeugten Zeilen und den noch unbekannten Inhalten abschrecken las-

sen sollten

Zunaumlchst das Wichtigste Innerhalb der geschweiften Klammern der

Ereignismethode CmdHallo_Click() wird spaumlter Ihr eigener Programm-

code hinzugefuumlgt

4493book Seite 24 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

25

1Zu den anderen Bestandteilen (die erst spaumlter fuumlr das eigene Programmie-

ren wichtig werden)

Namensraum C ist eine objektorientierte Sprache Ein wichtiges Element objektori-

entierter Sprachen sind die so genannten Klassen Klassen eroumlffnen wei-

tere Programmiermoumlglichkeiten Namensraumlume wiederum beinhalten

zusammengehoumlrige Klassen

using In obigem Listing koumlnnen Sie erkennen dass einige Programmzeilen

die mit using beginnen bereits entfernt wurden Das Schluumlsselwort

using dient zum Einbinden von Namensraumlumen in das aktuelle Projekt

Da wir die Klassen in diesen Namensraumlumen nicht benoumltigen wurden

die betreffenden Zeilen entfernt

Seit der Version 2015 von Visual Studio werden solche uumlberfluumlssigen Ele-

mente in grauer Schriftfarbe dargestellt Falls sich der Cursor in einer der

betreffenden Zeilen befindet erscheint links von der Zeile eine gelbe

Gluumlhbirne Platzieren Sie den Mauszeiger uumlber dieser Gluumlhbirne koumlnnen

Sie sich Hinweise dazu anzeigen lassen wie die uumlberfluumlssigen Elemente

ganz entfernt werden koumlnnen

namespace Oberhalb von public partial class und von private void erschei-

nen auszligerdem seit Visual Studio 2015 automatisch weitere Informatio-

nen zur Klasse Form1 und ihren Elementen in kleiner grauer Schrift wie

zum Beispiel 0 references oder 3 references Auch diese koumlnnen wir zu-

naumlchst noch ignorieren

Dieses erste Projekt verfuumlgt uumlber einen eigenen Namensraum (engl

namespace) daher namespace MeinErstes

public partial class Alle Elemente des aktuellen Formulars Form1 stehen innerhalb der

oumlffentlich zugaumlnglichen Klasse Form1 daher public class Form1 Ein Teil

der Elemente steht in dieser Datei ein anderer Teil der ebenfalls auto-

matisch erzeugt wurde steht in einer anderen hier nicht sichtbaren

Datei daher der Zusatz partial (dt teilweise)

Die Methode InitializeComponent() beinhaltet Programmzeilen die das

Aussehen und Verhalten der Steuerelemente des Programms bestim-

men

private void Der Zusatz private bedeutet dass die Ereignismethode CmdHalloClick()

nur in dieser Klasse bekannt ist Mit void wird gekennzeichnet dass die-

se Methode lediglich etwas ausfuumlhrt aber kein Ergebnis zuruumlckliefert

4493book Seite 25 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

26

Auf weitere Einzelheiten dieser automatisch erzeugten Bestandteile

wird zu einem spaumlteren Zeitpunkt eingegangen da es hier noch nicht

notwendig ist und eher verwirren wuumlrde

Der anfaumlnglich ausgefuumlhrte Doppelklick fuumlhrt immer zu dem Ereignis das

am haumlufigsten mit dem betreffenden Steuerelement verbunden wird

Click Das ist beim Button natuumlrlich das Ereignis Click Zu einem Steuerelement

gibt es aber auch noch andere moumlgliche Ereignisse

Bei den nachfolgenden Programmen werden nicht mehr alle Teile des Pro-

grammcodes im Buch abgebildet sondern nur noch

die Teile die vom Entwickler per Codeeingabe erzeugt werden

und die Teile des automatisch erzeugten Codes die wichtig fuumlr das allge-

meine Verstaumlndnis sind

Den vollstaumlndigen Programmcode koumlnnen Sie aber jederzeit betrachten

wenn Sie die Beispielprojekte laden bzw ausprobieren

146 Schreiben von Programmcode

In der Methode CmdHallo_Click() soll eine Befehlszeile eingefuumlgt werden

sodass sie anschlieszligend wie folgt aussieht

private void CmdHallo_Click(object sender EventArgs e)

LblAnzeigeText = Hallo

Listing 12 Projekt raquoMeinErsteslaquo Button raquoHallolaquo mit Code

Der Text muss in Anfuumlhrungszeichen gesetzt werden da C sonst an-

nimmt dass es sich um eine Variable mit dem Namen Hallo handelt

Anweisung Der Inhalt einer Methode setzt sich aus einzelnen Anweisungen zusam-

men die nacheinander ausgefuumlhrt werden Die vorliegende Methode ent-

haumllt nur eine Anweisung in ihr wird mithilfe des Gleichheitszeichens eine

Zuweisung durchgefuumlhrt

Zuweisung Bei einer Zuweisung wird der Ausdruck rechts vom Gleichheitszeichen

ausgewertet und der Variablen der Objekteigenschaft oder der Steuerele-

menteigenschaft links vom Gleichheitszeichen zugewiesen Die Zeichen-

4493book Seite 26 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

27

1kette Hallo wird der Eigenschaft Text des Steuerelements LblAnzeige mit-

tels folgender Schreibweise SteuerelementEigenschaft = Wert zugewiesen

Das fuumlhrt zur Anzeige des Werts

Nach dem Wechsel auf die Formularansicht koumlnnen Sie das naumlchste Steuer-

element auswaumlhlen fuumlr das eine Ereignismethode geschrieben werden soll

Code editierenInnerhalb des Codefensters kann Text mit den gaumlngigen Methoden der

Textverarbeitung editiert kopiert verschoben und geloumlscht werden

In der Ereignismethode CmdEnde_Click() soll der folgende Code stehen

private void CmdEnde_Click(object sender EventArgs e)

Close()

Listing 13 Projekt raquoMeinErsteslaquo Button raquoEndelaquo

Close()Die Methode Close() dient dem Schlieszligen eines Formulars Da es sich um

das einzige Formular dieses Projekts handelt wird dadurch das Programm

beendet und die gesamte Windows-Anwendung geschlossen

Dies waren einige Beispiele zur Aumlnderung der Eigenschaften eines Steuer-

elements zur Laufzeit des Programms durch Programmcode Sie erinnern

sich Zu Beginn hatten wir bereits die Starteigenschaften der Steuerele-

mente im Eigenschaften-Fenster eingestellt

147 Kommentare

Bei laumlngeren Programmen mit vielen Anweisungen gehoumlrt es zum guten

Programmierstil Kommentarzeilen zu schreiben In diesen Zeilen werden

einzelne Anweisungen oder auch laumlngere Bloumlcke von Anweisungen er-

laumlutert damit Sie selbst oder auch ein anderer Programmierer sie spaumlter

leichter nachvollziehen koumlnnen Alle Zeichen innerhalb eines Kommen-

tars werden nicht uumlbersetzt oder ausgefuumlhrt

Kommentar Ein Kommentar beginnt mit der Zeichenkombination endet mit der Zei-

chenkombination und kann sich uumlber mehrere Zeilen erstrecken

KommentarEine andere Moumlglichkeit ergibt sich durch die Zeichenkombination Ein

solcher Kommentar erstreckt sich nur bis zum Ende der Zeile

4493book Seite 27 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

28

Der folgende Programmcode wird um einen Kommentar ergaumlnzt

private void CmdEnde_Click(object sender EventArgs e)

Diese Anweisung beendetdas Programm

Close()

Listing 14 Projekt raquoMeinErsteslaquo Button raquoEndelaquo mit Kommentar

Code aus-

kommentieren

Hier noch ein kleiner Trick Sollen bestimmte Programmzeilen fuumlr einen

Test des Programms kurzfristig nicht ausgefuumlhrt werden koumlnnen Sie sie

auskommentieren indem Sie die Zeichenkombination vor die betreffen-

den Zeilen setzen Das geht sehr schnell indem Sie die betreffende(n)

Zeile(n) markieren und anschlieszligend das entsprechende Symbol in der

Symbolleiste anklicken siehe Abbildung 112 Rechts daneben befindet sich

das Symbol welches die Auskommentierung nach dem Test wieder ruumlck-

gaumlngig macht

Abbildung 112 Kommentar einaus

148 Starten Ausfuumlhren und Beenden des Programms

Programm starten Nach dem Einfuumlgen der Steuerelemente und dem Erstellen der Ereignis-

methoden ist das Programm fertig und kann gestartet werden Dazu

betaumltigen Sie den Start-Button in der Symbolleiste (dreieckiger gruumlner

Pfeil nach rechts) Alternativ starten Sie das Programm uumlber die Funk-

tionstaste (F5) oder den Menuumlpunkt Debuggen bull Debugging Starten

Das Formular erscheint und das Betaumltigen der Buttons fuumlhrt zum pro-

grammierten Ergebnis

Programm beenden Zur regulaumlren Beendigung eines Programms ist der Button mit der Auf-

schrift Ende vorgesehen Moumlchten Sie ein Programm waumlhrend des Verlaufs

vorzeitig abbrechen koumlnnen Sie auch den Ende-Button in der Symbolleiste

(rotes Quadrat) betaumltigen

4493book Seite 28 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

29

1FehlerTritt waumlhrend der Ausfuumlhrung eines Programms ein Fehler auf werden Sie

hierauf hingewiesen und das Codefenster zeigt die entsprechende Ereig-

nismethode sowie die fehlerhafte Zeile an In diesem Fall beenden Sie das

Programm korrigieren den Code und starten das Programm wieder

Programm testenEs ist empfehlenswert das Programm bereits waumlhrend der Entwicklung

mehrmals durch einen Aufruf zu testen und nicht erst wenn das Pro-

gramm vollstaumlndig erstellt worden ist Ein geeigneter Zeitpunkt dazu er-

gibt sich zum Beispiel

nach dem Einfuumlgen der Steuerelemente und dem Zuweisen der Eigen-

schaften die Sie zu Programmbeginn benoumltigen oder

nach dem Erstellen jeder Ereignismethode

149 Ausfuumlhrbares Programm

exe-DateiNach erfolgreichem Test des Programms koumlnnen Sie die ausfuumlhrbare Datei

(exe-Datei) auch auszligerhalb der Entwicklungsumgebung aufrufen Haben

Sie an den Grundeinstellungen nichts veraumlndert und die vorgeschlage-

nen Namen verwendet findet sich die zugehoumlrige exe-Datei des aktuellen

Projekts im Verzeichnis DokumenteVisual Studio 2017ProjectsMeinErs-

tesMeinErstesbinDebug Das Programm kann also ganz normal im Win-

dows-Explorer direkt uumlber Doppelklick gestartet werden

Die Weitergabe eines eigenen Windows-Programms auf einen anderen PC

ist etwas aufwendiger Dieser Vorgang wird im Anhang beschrieben

1410 Schlieszligen und Oumlffnen eines Projekts

Projekt schlieszligenUm ein Projekt zu schlieszligen waumlhlen Sie den Menuumlpunkt Datei bull Projekt-

mappe schliessen Falls Sie Veraumlnderungen vorgenommen haben wer-

den Sie vorher gefragt ob Sie diese Aumlnderungen speichern moumlchten

Wollen Sie die Projektdaten sicherheitshalber zwischendurch speichern ist

das uumlber den Menuumlpunkt Datei bull Alles speichern moumlglich Das ist bei

laumlngeren Entwicklungsphasen sehr zu empfehlen

Projekt oumlffnenZum Oumlffnen eines vorhandenen Projekts waumlhlen Sie den Menuumlpunkt

Datei bull oumlffnen bull Projekt Im darauffolgenden Dialogfeld Projekt oumlff-

nen waumlhlen Sie zunaumlchst das gewuumlnschte Projektverzeichnis aus und an-

schlieszligend die gleichnamige Datei mit der Endung sln

4493book Seite 29 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

30

Alle Beispielprojekte finden Sie auf wwwrheinwerk-verlagde4351 unter

raquoMaterialien zum Buchlaquo zum Download Sollte eines der Projekte einmal

nicht gestartet werden koumlnnen sollten Sie es uumlber den Menuumlpunkt Erstel-

len bull Projektmappe neu erstellen neu erstellen

1411 Uumlbung

Uumlbung UName Erzeugen Sie ein Windows-Programm mit einem Formular das zwei But-

tons und ein Label beinhaltet (siehe Abbildung 113) Bei Betaumltigung des

ersten Buttons erscheint im Label Ihr Name Bei Betaumltigung des zweiten

Buttons wird das Programm beendet Namensvorschlaumlge Projektname

UName Buttons CmdMeinName und CmdEnde Label LblMeinName

Abbildung 113 Uumlbung UName

1412 Empfehlungen fuumlr Zeilenumbruumlche

Zeilenumbruch Zeilenumbruumlche erhoumlhen die Lesbarkeit des Programmcodes Sie koumlnnen

jedoch nicht an jeder Stelle innerhalb einer Anweisung durchgefuumlhrt wer-

den Nachfolgend werden einige Stellen empfohlen

nach einer oumlffnenden Klammer (wie bereits gezeigt)

vor einer schlieszligenden Klammer

nach einem Komma

nach einem Operator und

nach einem Punkt hinter einem Objektnamen

Falls Sie einen Zeilenumbruch innerhalb einer Zeichenkette durchfuumlhren

werden seit Visual Studio 2017 zur Fehlervermeidung beide Teile der Zei-

chenkette automatisch durch Anfuumlhrungszeichen begrenzt und durch den

Verkettungsoperator + (siehe Abschnitt 224) miteinander verbunden

4493book Seite 30 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

31

115 Arbeiten mit Steuerelementen

151 Steuerelemente formatieren

HilfslinienZur besseren Anordnung der Steuerelemente auf dem Formular koumlnnen

Sie sie mithilfe der Maus nach Augenmaszlig verschieben Dabei erscheinen

automatisch Hilfslinien falls das aktuelle Element horizontal oder vertikal

parallel zu einem anderen Element steht

Mehrere Steuerele-

mente markieren

Weitere Moumlglichkeiten bieten die Menuumlpunkte im Menuuml Format In vie-

len Faumlllen muumlssen vorher mehrere Steuerelemente auf einmal markiert

werden (siehe Abbildung 114)

Abbildung 114 Mehrere markierte Elemente

Das geschieht entweder

durch Umrahmung der Elemente mit einem Rechteck nachdem Sie zu-

vor das Steuerelement Zeiger ausgewaumlhlt haben oder

durch Mehrfachauswahl indem Sie ab dem zweiten auszuwaumlhlenden

Steuerelement die (ordf)-Taste (wie fuumlr Groszligbuchstaben) oder die (Strg)-

Taste gedruumlckt halten

Menuuml raquoFormatlaquoUumlber das Menuuml Format haben Sie anschlieszligend folgende Moumlglichkeiten

zur Anpassung der Steuerelemente

Die ausgewaumlhlten Steuerelemente koumlnnen horizontal oder vertikal zu-

einander ausgerichtet werden (Menuuml Format bull Ausrichten)

Auch die horizontalen undoder vertikalen Dimensionen der ausge-

waumlhlten Steuerelemente koumlnnen angeglichen werden (Menuuml Format bull

Groumlsse angleichen)

4493book Seite 31 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

32

Einheitliche

Abstaumlnde

Zudem koumlnnen die horizontalen und vertikalen Abstaumlnde zwischen den

ausgewaumlhlten Steuerelementen angeglichen vergroumlszligert verkleinert

oder entfernt werden (Menuuml Format bull Horizontaler AbstandVer-

tikaler Abstand)

Die Steuerelemente koumlnnen auszligerdem horizontal oder vertikal inner-

halb des Formulars zentriert werden (Menuuml Format bull auf Formular

zentrieren)

Sollten sich die Steuerelemente teilweise uumlberlappen koumlnnen Sie einzel-

ne Steuerelemente in den Vorder- bzw Hintergrund schieben (Menuuml

Format bull Reihenfolge)

Sie koumlnnen alle Steuerelemente gleichzeitig gegen versehentliches Ver-

schieben absichern (Menuuml Format bull Steuerelemente Sperren) Diese

Sperrung gilt nur waumlhrend der Entwicklung des Programms

Abbildung 115 zeigt ein Formular mit drei Buttons die alle linksbuumlndig aus-

gerichtet sind und den gleichen vertikalen Abstand voneinander haben

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 markieren Sie darin

mehrere Steuerelemente und testen Sie anschlieszligend die einzelnen Moumlg-

lichkeiten des Format-Menuumls aus

Abbildung 115 Nach der Formatierung

152 Steuerelemente kopieren

Steuerelemente

kopieren

Zur schnelleren Erzeugung eines Projekts koumlnnen vorhandene Steuerele-

mente einschlieszliglich aller ihrer Eigenschaften kopiert werden Markieren

Sie hierzu die gewuumlnschten Steuerelemente und kopieren Sie sie entweder

4493book Seite 32 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

33

1 uumlber das Menuuml Bearbeiten bull Kopieren und das Menuuml Bearbeiten bull

Einfuumlgen oder

mit den Tastenkombinationen (Strg) + (C) und (Strg) + (V)

Anschlieszligend sollten Sie die neu erzeugten Steuerelemente direkt umbe-

nennen und an den gewuumlnschten Positionen anordnen

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 und kopieren Sie einzel-

ne Steuerelemente Kontrollieren Sie anschlieszligend die Liste der vorhan-

denen Steuerelemente im Eigenschaften-Fenster auf eine einheitliche

Namensgebung

153 Eigenschaften zur Laufzeit aumlndern

Size LocationSteuerelemente haben die Eigenschaften Size (mit den Komponenten

Width und Height) und Location (mit den Komponenten X und Y) zur Anga-

be von Groumlszlige und Position X und Y geben die Koordinaten der oberen lin-

ken Ecke des Steuerelements an gemessen von der oberen linken Ecke des

umgebenden Elements (meist das Formular) Saumlmtliche Werte werden in

Pixeln angegeben

Alle diese Eigenschaften koumlnnen sowohl waumlhrend der Entwicklungszeit als

auch waumlhrend der Laufzeit eines Projekts veraumlndert werden Zur Aumlnderung

waumlhrend der Entwicklungszeit koumlnnen Sie die Eigenschaftswerte wie ge-

wohnt im Eigenschaften-Fenster eingeben Als Beispiel fuumlr Aumlnderungen

waumlhrend der Laufzeit soll hingegen das folgende Programm (Projekt

Steuerelemente) dienen (siehe Abbildung 116)

Abbildung 116 Position und Groumlszlige bestimmen

4493book Seite 33 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

34

Zunaumlchst ein Hinweis zu den benoumltigten Namensraumlumen die oberhalb der

Klasse eingebunden werden

using Systemusing SystemDrawingusing SystemWindowsForms

Listing 15 Projekt raquoSteuerelementelaquo Namensraumlume

Gegenuumlber dem vorherigen Projekt ist noch der Namensraum SystemDra-

wing hinzugekommen der beim Zugriff auf Positions- Groumlszligen- oder Farb-

angaben benoumltigt wird Die drei genannten Namensraumlume reichen bei vie-

len Projekten aus

Es wird nachfolgend generell nur der Teil des Programmcodes angezeigt

der veraumlndert wurde

private void CmdPositionRel_Click()

CmdTestLocation = new Point(CmdTestLocationX + 20 CmdTestLocationY)

private void CmdPositionAbs_Click()

CmdTestLocation = new Point(100 200)private void CmdGroesseRel_Click()

CmdTestSize = new Size(CmdTestSizeWidth + 20 CmdTestSizeHeight)

private void CmdGroesseAbs_Click()

CmdTestSize = new Size(50 100)

Listing 16 Projekt raquoSteuerelementelaquo

4493book Seite 34 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

35

1Zur Erlaumluterung

Verkuumlrzte

Darstellung

Der Kopfteil der einzelnen Methoden wird aus Gruumlnden der Uumlbersicht-

lichkeit jeweils in verkuumlrzter Form abgebildet Das wird bei den meisten

nachfolgenden Beispielen ebenfalls so sein auszliger wenn es genau auf die

Inhalte des Methodenkopfs ankommt

Das Formular enthaumllt fuumlnf Buttons Die oberen vier Buttons dienen der

Veraumlnderung von Position und Groumlszlige des fuumlnften Buttons

Die Position eines Elements kann relativ zur aktuellen Position oder auf

absolute Werte eingestellt werden Das Gleiche gilt fuumlr die Groumlszlige eines

Elements

Bei beiden Angaben handelt es sich um Wertepaare (XY bzw Breite

Houmlhe)

new Point 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 bereitzu-

stellen

X Y Bei Betaumltigung des Buttons Position Abs wird die Position des fuumlnften

Buttons auf die Werte X=100 und Y=200 gestellt jeweils gemessen von der

linken oberen Ecke des Formulars

Bei Betaumltigung des Buttons Position Rel wird die Position des fuumlnften

Buttons auf die Werte X = CmdTestLocationX + 20 und Y = CmdTestLoca-

tionY gestellt Bei X wird also der alte Wert der Komponente X um 20 er-

houmlht das Element bewegt sich nach rechts Bei Y wird der alte Wert der

Komponente Y nicht veraumlndert das Element bewegt sich somit nicht

nach oben oder unten

Size Zur Einstellung der Groumlszlige dient die Struktur Size

Width Height Bei Betaumltigung des Buttons Groumlsse Abs wird die Groumlszlige des fuumlnften But-

tons auf die Werte Width = 50 und Height = 100 gestellt

Bei Betaumltigung des Buttons Groumlsse Rel wird die Groumlszlige des fuumlnften

Buttons auf die Werte Width = CmdTestSizeWidth + 20 und Height = Cmd-

TestSizeHeight gestellt Bei Width wird also der alte Wert der Kompo-

nente Width um 20 erhoumlht das Element wird breiter Bei Height wird der

fruumlhere Wert der Komponente Height nicht veraumlndert das Element ver-

aumlndert seine Houmlhe daher nicht

Nach einigen Klicks sieht das Formular aus wie das in Abbildung 117

4493book Seite 35 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

36

Abbildung 117 Veraumlnderung von Eigenschaften zur Laufzeit

154 Vergabe und Verwendung von Namen

Beachten Sie in allen Programmen dass jedes Steuerelement seinen eige-

nen eindeutigen Namen hat und immer mit diesem Namen angesprochen

werden muss Besonders am Anfang passiert es erfahrungsgemaumlszlig haumlufig

dass ein Programm nur deshalb nicht zum gewuumlnschten Erfolg fuumlhrt weil

ein nicht vorhandener Name verwendet wird In diesem Zusammenhang

moumlchte ich noch einmal auf die Namenskonventionen hinweisen

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 uumlber Typ und Funktion

des Steuerelements Falls Sie beim Schreiben von Programmcode anschlie-

szligend diese Namen z B vollstaumlndig in Kleinbuchstaben eingeben werden

Sie nach Verlassen der Zeile darauf aufmerksam gemacht Sie koumlnnen so

schnell erkennen ob Sie tatsaumlchlich ein vorhandenes Steuerelement ver-

wendet haben

155 Verknuumlpfung von Texten mehrzeilige Texte

+ zur Verkettung Mithilfe des Zeichens + koumlnnen mehrere Texte miteinander verknuumlpft wer-

den Falls ein einzelner Zahlenwert zwischen den Texten steht wird er vor-

her in einen Text umgewandelt Aufgepasst Falls mehrere Zahlenwerte

direkt nacheinander mithilfe des Zeichens + verknuumlpft werden werden sie

zunaumlchst mathematisch addiert

4493book Seite 36 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

37

1nFalls Sie eine mehrzeilige Ausgabe wuumlnschen koumlnnen Sie einen Zeilenvor-

schub mithilfe der Zeichenfolge n (fuumlr new line) erzeugen

Nachfolgend wird das Formular des Projekts Steuerelemente vergroumlszligert

zum Beispiel auf 500 times 400 Anschlieszligend wird es um ein Label ergaumlnzt in

dem die aktuelle Position und Groumlszlige des Buttons angezeigt werden Das

soll nach Betaumltigung des Buttons Anzeige geschehen

private void CmdAnzeige_Click()

LblAnzeigeText = Position X + CmdTestLocationX + Y + CmdTestLocationY + n + Groumlszlige Breite +CmdTestSizeWidth + Houmlhe + CmdTestSizeHeight

Listing 17 Projekt raquoSteuerelementelaquo mit Anzeige

Nach einigen Klicks und der Betaumltigung des Buttons Anzeige sieht das For-

mular aus wie das in Abbildung 118

Abbildung 118 Anzeige der Eigenschaften

156 Eigenschaft BackColor Farben allgemein

BackColorDie Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-

Color festgelegt Dabei koumlnnen Sie die Farbe zur Entwicklungszeit leicht

mithilfe einer Farbpalette oder aus Systemfarben auswaumlhlen

ColorHintergrundfarben und andere Farben koumlnnen Sie auch zur Laufzeit ein-

stellen Dabei bedienen Sie sich der Farbwerte die Sie uumlber die Struktur Co-

lor auswaumlhlen

Ein Beispiel ebenfalls im Projekt Steuerelemente

4493book Seite 37 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

38

private void CmdFarbe_Click()

BackColor = ColorYellowLblAnzeigeBackColor = ColorFromArgb(192 255 0)

Listing 18 Projekt raquoSteuerelementelaquo mit Farben

Zur Erlaumluterung

Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften z B

Yellow Der Wert kann der Eigenschaft BackColor des Steuerelements zu-

gewiesen werden hier aber handelt es sich um das Formular selbst

FromArgb() Auszligerdem bietet die Struktur die Methode FromArgb() Diese koumlnnen Sie

auf verschiedene Arten aufrufen Eine dieser Arten erwartet genau drei

Parameter naumlmlich die Werte fuumlr Rot Gruumln und Blau jeweils zwischen 0

und 255

Das Formular sieht nach der Aumlnderung der Eigenschaft Farbe aus wie das in

Abbildung 119

Abbildung 119 Nach Aumlnderung der Eigenschaft raquoFarbelaquo

4493book Seite 38 Mittwoch 8 Maumlrz 2017 112 13

39

2

Kapitel 2

Grundlagen

In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-

lagen von C in Verbindung mit den gaumlngigen Steuerelementen von

Windows-Programmen

In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

mierung wie Variablen Operatoren Verzweigungen und Schleifen gemein-

sam mit wohlbekannten haumlufig verwendeten Steuerelementen kennen

21 Variablen und Datentypen

Variablen dienen der voruumlbergehenden Speicherung von Daten die sich

waumlhrend der Laufzeit eines Programms aumlndern koumlnnen Eine Variable be-

sitzt einen eindeutigen Namen unter dem sie angesprochen werden kann

211 Namen Werte

NamensregelnFuumlr die Namen von Variablen gelten in C die folgenden Regeln

Sie beginnen mit einem Buchstaben

Sie koumlnnen nur aus Buchstaben Zahlen und einigen wenigen Sonderzei-

chen (wie z B dem Unterstrich _) bestehen

Sie duumlrfen Umlaute oder auch das scharfe szlig enthalten Allerdings kann

das zu Fehlern im Einsatz unter anderssprachigen Umgebungen fuumlhren

Daher rate ich davon ab

Innerhalb eines Guumlltigkeitsbereichs darf es keine zwei Variablen mit

dem gleichen Namen geben (siehe Abschnitt 214)

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

4493book Seite 39 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

15

1Kapitel 1

Einfuumlhrung

In diesem Kapitel erlernen Sie anhand eines ersten Projekts den Umgang

mit der Entwicklungsumgebung und den Steuerelementen Anschlieszligend

werden Sie in der Lage sein Ihr erstes eigenes Windows-Programm zu

erstellen

CC ist eine objektorientierte Programmiersprache die von Microsoft im

Zusammenhang mit dem NET Framework eingefuumlhrt wurde Mithilfe der

Entwicklungsumgebung Visual Studio 2017 koumlnnen 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 Verfuumlgung

11 Aufbau dieses Buchs

BeispieleDieses Buch vermittelt Ihnen zunaumlchst einen einfachen Einstieg in die Pro-

grammierung mit C und Visual Studio 2017 Die Bearbeitung der Beispiele

und das selbststaumlndige Loumlsen der vorliegenden Uumlbungsaufgaben helfen da-

bei Dadurch werden Sie schnell erste Erfolgserlebnisse haben die Sie zum

Weitermachen motivieren In spaumlteren Kapiteln werden Ihnen anschlie-

szligend auch komplexere Themen vermittelt

GrundlagenVon Anfang an wird mit anschaulichen Windows-Anwendungen gearbei-

tet Die Grundlagen der Programmiersprache und die Standardelemente

einer Windows-Anwendung wie Sie sie bereits von anderen Windows-Pro-

grammen her kennen werden gemeinsam vermittelt Die Anschaulichkeit

einer Windows-Anwendung hilft dabei den eher theoretischen Hinter-

grund der Programmiersprache leichter zu verstehen

4493book Seite 15 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

16

12 Visual Studio 2017

Community-Version Fuumlr dieses Buch wird die frei verfuumlgbare Entwicklungsumgebung Visual

Studio Community 2017 eingesetzt Sie koumlnnen sie unter Windows 7 bis ein-

schlieszliglich Windows 10 nutzen Diese Version von Visual Studio koumlnnen

Sie bei Microsoft herunterladen (wwwvisualstudiocomde-de) und auf Ih-

rem 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 ausfuumlhrbaren Programme einen Debugger zur Fehler-

suche und vieles mehr

Noch eine Anmerkung in eigener Sache Fuumlr die Hilfe bei der Erstellung die-

ses Buchs bedanke ich mich beim Team des Rheinwerk Verlags besonders

bei Anne Scheibe

Thomas Theis

13 Mein erstes Windows-Programm

Anhand eines ersten Projekts werden Sie nun die verschiedenen Schritte

durchlaufen die zur Erstellung eines einfachen Programms mit C in Visu-

al Studio notwendig sind Das Programm soll nach dem Aufruf zunaumlchst so

aussehen wie in Abbildung 11 gezeigt

Abbildung 11 Erstes Programm nach dem Aufruf

Nach Betaumltigung des Buttons Hallo soll sich der Text in der obersten Zeile

entsprechend veraumlndern (siehe Abbildung 12)

4493book Seite 16 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

17

1

Abbildung 12 Nach einem Klick auf den Button raquoHallolaquo

14 Visual Studio-Entwicklungsumgebung

Waumlhrend der Projekterstellung werden Sie die Visual Studio-Entwicklungs-

umgebung Schritt fuumlr Schritt kennenlernen

141 Ein neues Projekt

Nach dem Aufruf des Programms Visual Studio Community 2017 muumlssen

Sie zur Erstellung eines neuen C-Projekts den Menuumlpunkt Datei bull Neu bull

Projekt ausfuumlhren Anschlieszligend waumlhlen Sie in der Kategorie Instal-

liert bull Vorlagen bull Visual C die Vorlage Windows Forms-App aus Als

Projektname bietet die Entwicklungsumgebung den Namen Windows-

FormsApp1 an dieser sollte geaumlndert werden zum Beispiel in MeinErstes

Nach Betaumltigung der Schaltflaumlche OK erscheinen nun einige Elemente der

Entwicklungsumgebung Folgende sind besonders wichtig

Form Das Benutzerformular (engl Form) enthaumllt die Oberflaumlche fuumlr den Benut-

zer des Programms (siehe Abbildung 13)

Abbildung 13 Benutzerformular

Toolbox Der Werkzeugkasten (engl Toolbox) enthaumllt die Steuerelemente fuumlr

den Benutzer mit denen er den Ablauf des Programms steuern kann Sie

4493book Seite 17 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

18

werden vom Programmentwickler in das Formular eingefuumlgt (siehe Ab-

bildung 14) Sollten in der Toolbox keine Steuerelemente angezeigt wer-

den klicken Sie einmal auf das Benutzerformular und anschlieszligend wie-

der auf die Toolbox Weitere Registerkarten zum Beispiel Server-

Explorer und Datenquellen werden nicht benoumltigt und koumlnnen je-

weils uumlber das Kreuz oben rechts ausgeblendet werden

Abbildung 14 Der raquoWerkzeugkastenlaquo mit verschiedenen

Kategorien von Steuerelementen

Eigenschaften-

Fenster

Das Eigenschaften-Fenster (engl Properties Window) dient dem An-

zeigen und Aumlndern der Eigenschaften von Steuerelementen innerhalb

des Formulars durch den Programmentwickler (siehe Abbildung 15) Ich

empfehle Ihnen sich die Eigenschaften in alphabetischer Reihenfolge

anzeigen zu lassen Betaumltigen Sie dazu einfach unter Form1 das zweite

Symbol von links

Abbildung 15 Eigenschaften-Fenster

Projektmappen-

Explorer

Der Projektmappen-Explorer (engl Solution Explorer) zeigt das geoumlff-

nete Projekt und die darin vorhandenen Elemente (siehe Abbildung 16)

4493book Seite 18 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

19

1

Abbildung 16 Projektmappen-Explorer

Elemente anzeigenSollte der Werkzeugkasten das Eigenschaften-Fenster oder der Pro-

jektmappen-Explorer nicht angezeigt werden koumlnnen Sie das betreffen-

de Element uumlber das Menuuml Ansicht einblenden Ist das Formular nicht

sichtbar blenden Sie es einfach uumlber einen Doppelklick auf den Namen

(Form1cs) im Projektmappen-Explorer ein Sollten die Eigenschaften

eines Steuerelements nicht im bereits sichtbaren Eigenschaften-Fenster

angezeigt werden markieren Sie zunaumlchst den Namen der Formulardatei

(Form1cs) im Projektmappen-Explorer und anschlieszligend das betref-

fende Steuerelement

Anfangs schreiben Sie nur einfache Programme mit wenigen Elementen

daher benoumltigen Sie den Projektmappen-Explorer jetzt noch nicht Es

empfiehlt sich das Eigenschaften-Fenster nach oben zu vergroumlszligern

142 Einfuumlgen von Steuerelementen

Label ButtonZunaumlchst sollen drei Steuerelemente in das Formular eingefuumlgt werden

ein Bezeichnungsfeld (Label) und zwei Befehlsschaltflaumlchen (Buttons) Ein

Bezeichnungsfeld dient im Allgemeinen dazu feste oder veraumlnderliche

Texte auf der Benutzeroberflaumlche anzuzeigen In diesem Programm soll

das Label einen Text anzeigen Ein Button dient zum Starten bestimmter

Programmteile oder allgemeiner ausgedruumlckt zum Ausloumlsen von Ereignis-

sen In diesem Programm sollen die Buttons dazu dienen den Text anzu-

zeigen bzw das Programm zu beenden

Allgemeine

Steuerelemente

Um ein Steuerelement einzufuumlgen ziehen Sie es mithilfe der Maus aus

dem Werkzeugkasten an die gewuumlnschte Stelle im Formular Alle Steuer-

elemente finden sich im Werkzeugkasten unter Alle Windows Forms

4493book Seite 19 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

20

Uumlbersichtlicher ist jedoch der Zugriff uumlber Allgemeine Steuerelemente

(engl Common Controls) siehe Abbildung 17

Abbildung 17 raquoAllgemeine Steuerelementelaquo im raquoWerkzeugkastenlaquo

Steuerelement

auswaumlhlen

Ein Doppelklick auf ein Steuerelement im Werkzeugkasten fuumlgt es

ebenfalls in die Form ein Position und Groumlszlige des Elements koumlnnen an-

schlieszligend noch veraumlndert werden Dazu waumlhlen Sie das betreffende

Steuerelement vorher durch Anklicken aus (siehe Abbildung 18) Ein uumlber-

fluumlssiges Steuerelement koumlnnen Sie durch Auswaumlhlen und Druumlcken der

Taste (Entf) entfernen

Abbildung 18 Ausgewaumlhlter Button

Die Groumlszlige und andere Eigenschaften des Formulars selbst koumlnnen Sie

ebenfalls veraumlndern Dazu waumlhlen Sie es vorher durch Anklicken einer frei-

en Stelle im Formular aus

143 Arbeiten mit dem Eigenschaften-Fenster

Die eingefuumlgten Steuerelemente haben zunaumlchst einheitliche Namen und

Aufschriften diese sollten Sie allerdings zur einfacheren Programment-

wicklung aumlndern Es gibt bestimmte Namenskonventionen die die Les-

barkeit erleichtern Die Namen beinhalten den Typ (mit drei Buchstaben

abgekuumlrzt) und die Aufgabe des Steuerelements (jeweils mit groszligem An-

4493book Seite 20 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

21

1fangsbuchstaben) Aus den Namen der Steuerelemente ergeben sich auch

die Namen der sogenannten Ereignisprozeduren ebenfalls mit groszligem

Anfangsbuchstaben siehe Abschnitt 145 Seit Visual Studio 2017 wird staumlr-

ker auf die Einhaltung der Namenskonventionen geachtet

Cmd Txt Lbl Ein Button (eigentlich Command Button) der die Anzeige der Zeit ausloumlsen

soll wird beispielsweise mit CmdZeit bezeichnet Weitere Vorsilben sind Txt

(TextfeldTextBox) Lbl (BezeichnungsfeldLabel) Opt (Optionsschalt-

flaumlcheRadioButton) Frm (FormularForm) und Chk (Kontrollkaumlstchen

CheckBox)

Zur Aumlnderung des Namens eines Steuerelements muss es zunaumlchst ausge-

waumlhlt werden Das koumlnnen Sie entweder durch Anklicken des Steuerele-

ments auf dem Formular oder durch Auswahl desselben aus der Liste am

oberen Ende des Eigenschaften-Fensters tun

Eigenschaften-

Fenster

Im Eigenschaften-Fenster werden alle Eigenschaften des ausgewaumlhlten

Steuerelements angezeigt Die Liste ist zweispaltig In der linken Spalte

steht der Name der Eigenschaft in der rechten ihr aktueller Wert Die Eigen-

schaft (Name) steht am Anfang der Liste der Eigenschaften Die betreffende

Zeile waumlhlen Sie durch Anklicken aus und geben hier den neuen Namen

ein Nach Bestaumltigung mit der Taste (cent) ist die Eigenschaft geaumlndert (siehe

Abbildung 19)

Abbildung 19 Button nach der Namensaumlnderung

TextDie Aufschrift von Buttons Labels und Formularen ist in der Eigenschaft

Text angegeben Sobald diese Eigenschaft veraumlndert wird erscheint die ver-

aumlnderte Aufschrift in dem betreffenden Steuerelement Auch der Name

und die Aufschrift des Formulars sollten geaumlndert werden Im Folgenden

sind die gewuumlnschten Eigenschaften fuumlr die Steuerelemente dieses Pro-

gramms in Tabellenform angegeben siehe Tabelle 11

4493book Seite 21 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

22

Startzustand Hiermit legen Sie den Startzustand fest also die Eigenschaften welche die

Steuerelemente zu Beginn des Programms bzw eventuell waumlhrend des ge-

samten Programms haben sollen Viele Eigenschaften koumlnnen Sie auch

noch waumlhrend der Laufzeit des Programms durch den Programmcode ver-

aumlndern

Bei einem Label ergibt die Einstellung der Eigenschaft BorderStyle auf

FixedSingle einen Rahmen Zur Aumlnderung auf FixedSingle klappen Sie die

Liste bei der Eigenschaft auf und waumlhlen den betreffenden Eintrag aus sie-

he Abbildung 110 Zur Aumlnderung einiger Eigenschaften muumlssen Sie gegebe-

nenfalls ein Dialogfeld aufrufen

Abbildung 110 Label nach der Aumlnderung von Name und BorderStyle

Typ Eigenschaft Einstellung

Formular Text Mein erstes Programm

Button Name CmdHallo

Text Hallo

Button Name CmdEnde

Text Ende

Label Name LblAnzeige

Text (leer)

BorderStyle FixedSingle

Tabelle 11 Steuerelemente mit Eigenschaften

4493book Seite 22 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

23

1Im Label soll zunaumlchst der Text (leer) erscheinen Hierzu waumlhlen Sie den

vorhandenen Text durch Anklicken aus und aumlndern ihn

Liste der

Steuerelemente

Sie finden alle in diesem Formular vorhandenen Steuerelemente in der Lis-

te die sich am oberen Ende des Eigenschaften-Fensters oumlffnen laumlsst

Dabei zeigt sich ein Vorteil der einheitlichen Namensvergabe Die Steuer-

elemente des gleichen Typs stehen immer direkt untereinander

144 Speichern eines Projekts

Alles speichernDie Daten eines C-Projekts werden innerhalb von Visual Studio in ver-

schiedenen Dateien gespeichert Zum Speichern des gesamten Projekts

verwenden Sie den Menuumlpunkt Datei bull Alles Speichern Diesen Vorgang

sollten Sie in regelmaumlszligigen Abstaumlnden durchfuumlhren damit keine Aumlnderun-

gen verloren gehen koumlnnen

Die in diesem Skript angegebenen Namen erleichtern eine schnelle und

eindeutige Orientierung und das spaumltere Auffinden von aumllteren Pro-

grammen

145 Das Codefenster

EreignisDer Ablauf eines Windows-Programms wird im Wesentlichen durch das

Ausloumlsen von Ereignissen durch den Benutzer gesteuert Er loumlst z B die

Anzeige des Texts Hallo aus indem er auf den Button Hallo klickt Der

Entwickler muss dafuumlr sorgen dass aufgrund dieses Ereignisses auch tat-

saumlchlich der gewuumlnschte 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

EreignismethodeZum Schreiben einer Ereignismethode fuumlhren Sie am besten einen Dop-

pelklick auf dem betreffenden Steuerelement aus Daraufhin erscheint das

Codefenster Zwischen der Formularansicht und der Codeansicht koumlnnen

Sie anschlieszligend uumlber die Menuumlpunkte Ansicht bull Code bzw Ansicht bull

Designer hin- und herschalten Das ist auch uumlber die Registerkarten ober-

halb des Formulars bzw des Codefensters moumlglich (siehe Abbildung 111)

4493book Seite 23 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

24

Abbildung 111 Registerkarten

Nach erfolgtem Doppelklick auf den Button Hallo erscheinen im Code-

fenster die folgenden Eintraumlge

using Systemusing SystemWindowsForms

namespace MeinErstes

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdHallo_Click(object sender EventArgs e)

Listing 11 Projekt raquoMeinErsteslaquo Button raquoHallolaquo ohne Code

Zur Erlaumluterung

Grundsaumltzlich gilt dass Sie sich nicht von der Vielzahl der automatisch

erzeugten Zeilen und den noch unbekannten Inhalten abschrecken las-

sen sollten

Zunaumlchst das Wichtigste Innerhalb der geschweiften Klammern der

Ereignismethode CmdHallo_Click() wird spaumlter Ihr eigener Programm-

code hinzugefuumlgt

4493book Seite 24 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

25

1Zu den anderen Bestandteilen (die erst spaumlter fuumlr das eigene Programmie-

ren wichtig werden)

Namensraum C ist eine objektorientierte Sprache Ein wichtiges Element objektori-

entierter Sprachen sind die so genannten Klassen Klassen eroumlffnen wei-

tere Programmiermoumlglichkeiten Namensraumlume wiederum beinhalten

zusammengehoumlrige Klassen

using In obigem Listing koumlnnen Sie erkennen dass einige Programmzeilen

die mit using beginnen bereits entfernt wurden Das Schluumlsselwort

using dient zum Einbinden von Namensraumlumen in das aktuelle Projekt

Da wir die Klassen in diesen Namensraumlumen nicht benoumltigen wurden

die betreffenden Zeilen entfernt

Seit der Version 2015 von Visual Studio werden solche uumlberfluumlssigen Ele-

mente in grauer Schriftfarbe dargestellt Falls sich der Cursor in einer der

betreffenden Zeilen befindet erscheint links von der Zeile eine gelbe

Gluumlhbirne Platzieren Sie den Mauszeiger uumlber dieser Gluumlhbirne koumlnnen

Sie sich Hinweise dazu anzeigen lassen wie die uumlberfluumlssigen Elemente

ganz entfernt werden koumlnnen

namespace Oberhalb von public partial class und von private void erschei-

nen auszligerdem seit Visual Studio 2015 automatisch weitere Informatio-

nen zur Klasse Form1 und ihren Elementen in kleiner grauer Schrift wie

zum Beispiel 0 references oder 3 references Auch diese koumlnnen wir zu-

naumlchst noch ignorieren

Dieses erste Projekt verfuumlgt uumlber einen eigenen Namensraum (engl

namespace) daher namespace MeinErstes

public partial class Alle Elemente des aktuellen Formulars Form1 stehen innerhalb der

oumlffentlich zugaumlnglichen Klasse Form1 daher public class Form1 Ein Teil

der Elemente steht in dieser Datei ein anderer Teil der ebenfalls auto-

matisch erzeugt wurde steht in einer anderen hier nicht sichtbaren

Datei daher der Zusatz partial (dt teilweise)

Die Methode InitializeComponent() beinhaltet Programmzeilen die das

Aussehen und Verhalten der Steuerelemente des Programms bestim-

men

private void Der Zusatz private bedeutet dass die Ereignismethode CmdHalloClick()

nur in dieser Klasse bekannt ist Mit void wird gekennzeichnet dass die-

se Methode lediglich etwas ausfuumlhrt aber kein Ergebnis zuruumlckliefert

4493book Seite 25 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

26

Auf weitere Einzelheiten dieser automatisch erzeugten Bestandteile

wird zu einem spaumlteren Zeitpunkt eingegangen da es hier noch nicht

notwendig ist und eher verwirren wuumlrde

Der anfaumlnglich ausgefuumlhrte Doppelklick fuumlhrt immer zu dem Ereignis das

am haumlufigsten mit dem betreffenden Steuerelement verbunden wird

Click Das ist beim Button natuumlrlich das Ereignis Click Zu einem Steuerelement

gibt es aber auch noch andere moumlgliche Ereignisse

Bei den nachfolgenden Programmen werden nicht mehr alle Teile des Pro-

grammcodes im Buch abgebildet sondern nur noch

die Teile die vom Entwickler per Codeeingabe erzeugt werden

und die Teile des automatisch erzeugten Codes die wichtig fuumlr das allge-

meine Verstaumlndnis sind

Den vollstaumlndigen Programmcode koumlnnen Sie aber jederzeit betrachten

wenn Sie die Beispielprojekte laden bzw ausprobieren

146 Schreiben von Programmcode

In der Methode CmdHallo_Click() soll eine Befehlszeile eingefuumlgt werden

sodass sie anschlieszligend wie folgt aussieht

private void CmdHallo_Click(object sender EventArgs e)

LblAnzeigeText = Hallo

Listing 12 Projekt raquoMeinErsteslaquo Button raquoHallolaquo mit Code

Der Text muss in Anfuumlhrungszeichen gesetzt werden da C sonst an-

nimmt dass es sich um eine Variable mit dem Namen Hallo handelt

Anweisung Der Inhalt einer Methode setzt sich aus einzelnen Anweisungen zusam-

men die nacheinander ausgefuumlhrt werden Die vorliegende Methode ent-

haumllt nur eine Anweisung in ihr wird mithilfe des Gleichheitszeichens eine

Zuweisung durchgefuumlhrt

Zuweisung Bei einer Zuweisung wird der Ausdruck rechts vom Gleichheitszeichen

ausgewertet und der Variablen der Objekteigenschaft oder der Steuerele-

menteigenschaft links vom Gleichheitszeichen zugewiesen Die Zeichen-

4493book Seite 26 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

27

1kette Hallo wird der Eigenschaft Text des Steuerelements LblAnzeige mit-

tels folgender Schreibweise SteuerelementEigenschaft = Wert zugewiesen

Das fuumlhrt zur Anzeige des Werts

Nach dem Wechsel auf die Formularansicht koumlnnen Sie das naumlchste Steuer-

element auswaumlhlen fuumlr das eine Ereignismethode geschrieben werden soll

Code editierenInnerhalb des Codefensters kann Text mit den gaumlngigen Methoden der

Textverarbeitung editiert kopiert verschoben und geloumlscht werden

In der Ereignismethode CmdEnde_Click() soll der folgende Code stehen

private void CmdEnde_Click(object sender EventArgs e)

Close()

Listing 13 Projekt raquoMeinErsteslaquo Button raquoEndelaquo

Close()Die Methode Close() dient dem Schlieszligen eines Formulars Da es sich um

das einzige Formular dieses Projekts handelt wird dadurch das Programm

beendet und die gesamte Windows-Anwendung geschlossen

Dies waren einige Beispiele zur Aumlnderung der Eigenschaften eines Steuer-

elements zur Laufzeit des Programms durch Programmcode Sie erinnern

sich Zu Beginn hatten wir bereits die Starteigenschaften der Steuerele-

mente im Eigenschaften-Fenster eingestellt

147 Kommentare

Bei laumlngeren Programmen mit vielen Anweisungen gehoumlrt es zum guten

Programmierstil Kommentarzeilen zu schreiben In diesen Zeilen werden

einzelne Anweisungen oder auch laumlngere Bloumlcke von Anweisungen er-

laumlutert damit Sie selbst oder auch ein anderer Programmierer sie spaumlter

leichter nachvollziehen koumlnnen Alle Zeichen innerhalb eines Kommen-

tars werden nicht uumlbersetzt oder ausgefuumlhrt

Kommentar Ein Kommentar beginnt mit der Zeichenkombination endet mit der Zei-

chenkombination und kann sich uumlber mehrere Zeilen erstrecken

KommentarEine andere Moumlglichkeit ergibt sich durch die Zeichenkombination Ein

solcher Kommentar erstreckt sich nur bis zum Ende der Zeile

4493book Seite 27 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

28

Der folgende Programmcode wird um einen Kommentar ergaumlnzt

private void CmdEnde_Click(object sender EventArgs e)

Diese Anweisung beendetdas Programm

Close()

Listing 14 Projekt raquoMeinErsteslaquo Button raquoEndelaquo mit Kommentar

Code aus-

kommentieren

Hier noch ein kleiner Trick Sollen bestimmte Programmzeilen fuumlr einen

Test des Programms kurzfristig nicht ausgefuumlhrt werden koumlnnen Sie sie

auskommentieren indem Sie die Zeichenkombination vor die betreffen-

den Zeilen setzen Das geht sehr schnell indem Sie die betreffende(n)

Zeile(n) markieren und anschlieszligend das entsprechende Symbol in der

Symbolleiste anklicken siehe Abbildung 112 Rechts daneben befindet sich

das Symbol welches die Auskommentierung nach dem Test wieder ruumlck-

gaumlngig macht

Abbildung 112 Kommentar einaus

148 Starten Ausfuumlhren und Beenden des Programms

Programm starten Nach dem Einfuumlgen der Steuerelemente und dem Erstellen der Ereignis-

methoden ist das Programm fertig und kann gestartet werden Dazu

betaumltigen Sie den Start-Button in der Symbolleiste (dreieckiger gruumlner

Pfeil nach rechts) Alternativ starten Sie das Programm uumlber die Funk-

tionstaste (F5) oder den Menuumlpunkt Debuggen bull Debugging Starten

Das Formular erscheint und das Betaumltigen der Buttons fuumlhrt zum pro-

grammierten Ergebnis

Programm beenden Zur regulaumlren Beendigung eines Programms ist der Button mit der Auf-

schrift Ende vorgesehen Moumlchten Sie ein Programm waumlhrend des Verlaufs

vorzeitig abbrechen koumlnnen Sie auch den Ende-Button in der Symbolleiste

(rotes Quadrat) betaumltigen

4493book Seite 28 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

29

1FehlerTritt waumlhrend der Ausfuumlhrung eines Programms ein Fehler auf werden Sie

hierauf hingewiesen und das Codefenster zeigt die entsprechende Ereig-

nismethode sowie die fehlerhafte Zeile an In diesem Fall beenden Sie das

Programm korrigieren den Code und starten das Programm wieder

Programm testenEs ist empfehlenswert das Programm bereits waumlhrend der Entwicklung

mehrmals durch einen Aufruf zu testen und nicht erst wenn das Pro-

gramm vollstaumlndig erstellt worden ist Ein geeigneter Zeitpunkt dazu er-

gibt sich zum Beispiel

nach dem Einfuumlgen der Steuerelemente und dem Zuweisen der Eigen-

schaften die Sie zu Programmbeginn benoumltigen oder

nach dem Erstellen jeder Ereignismethode

149 Ausfuumlhrbares Programm

exe-DateiNach erfolgreichem Test des Programms koumlnnen Sie die ausfuumlhrbare Datei

(exe-Datei) auch auszligerhalb der Entwicklungsumgebung aufrufen Haben

Sie an den Grundeinstellungen nichts veraumlndert und die vorgeschlage-

nen Namen verwendet findet sich die zugehoumlrige exe-Datei des aktuellen

Projekts im Verzeichnis DokumenteVisual Studio 2017ProjectsMeinErs-

tesMeinErstesbinDebug Das Programm kann also ganz normal im Win-

dows-Explorer direkt uumlber Doppelklick gestartet werden

Die Weitergabe eines eigenen Windows-Programms auf einen anderen PC

ist etwas aufwendiger Dieser Vorgang wird im Anhang beschrieben

1410 Schlieszligen und Oumlffnen eines Projekts

Projekt schlieszligenUm ein Projekt zu schlieszligen waumlhlen Sie den Menuumlpunkt Datei bull Projekt-

mappe schliessen Falls Sie Veraumlnderungen vorgenommen haben wer-

den Sie vorher gefragt ob Sie diese Aumlnderungen speichern moumlchten

Wollen Sie die Projektdaten sicherheitshalber zwischendurch speichern ist

das uumlber den Menuumlpunkt Datei bull Alles speichern moumlglich Das ist bei

laumlngeren Entwicklungsphasen sehr zu empfehlen

Projekt oumlffnenZum Oumlffnen eines vorhandenen Projekts waumlhlen Sie den Menuumlpunkt

Datei bull oumlffnen bull Projekt Im darauffolgenden Dialogfeld Projekt oumlff-

nen waumlhlen Sie zunaumlchst das gewuumlnschte Projektverzeichnis aus und an-

schlieszligend die gleichnamige Datei mit der Endung sln

4493book Seite 29 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

30

Alle Beispielprojekte finden Sie auf wwwrheinwerk-verlagde4351 unter

raquoMaterialien zum Buchlaquo zum Download Sollte eines der Projekte einmal

nicht gestartet werden koumlnnen sollten Sie es uumlber den Menuumlpunkt Erstel-

len bull Projektmappe neu erstellen neu erstellen

1411 Uumlbung

Uumlbung UName Erzeugen Sie ein Windows-Programm mit einem Formular das zwei But-

tons und ein Label beinhaltet (siehe Abbildung 113) Bei Betaumltigung des

ersten Buttons erscheint im Label Ihr Name Bei Betaumltigung des zweiten

Buttons wird das Programm beendet Namensvorschlaumlge Projektname

UName Buttons CmdMeinName und CmdEnde Label LblMeinName

Abbildung 113 Uumlbung UName

1412 Empfehlungen fuumlr Zeilenumbruumlche

Zeilenumbruch Zeilenumbruumlche erhoumlhen die Lesbarkeit des Programmcodes Sie koumlnnen

jedoch nicht an jeder Stelle innerhalb einer Anweisung durchgefuumlhrt wer-

den Nachfolgend werden einige Stellen empfohlen

nach einer oumlffnenden Klammer (wie bereits gezeigt)

vor einer schlieszligenden Klammer

nach einem Komma

nach einem Operator und

nach einem Punkt hinter einem Objektnamen

Falls Sie einen Zeilenumbruch innerhalb einer Zeichenkette durchfuumlhren

werden seit Visual Studio 2017 zur Fehlervermeidung beide Teile der Zei-

chenkette automatisch durch Anfuumlhrungszeichen begrenzt und durch den

Verkettungsoperator + (siehe Abschnitt 224) miteinander verbunden

4493book Seite 30 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

31

115 Arbeiten mit Steuerelementen

151 Steuerelemente formatieren

HilfslinienZur besseren Anordnung der Steuerelemente auf dem Formular koumlnnen

Sie sie mithilfe der Maus nach Augenmaszlig verschieben Dabei erscheinen

automatisch Hilfslinien falls das aktuelle Element horizontal oder vertikal

parallel zu einem anderen Element steht

Mehrere Steuerele-

mente markieren

Weitere Moumlglichkeiten bieten die Menuumlpunkte im Menuuml Format In vie-

len Faumlllen muumlssen vorher mehrere Steuerelemente auf einmal markiert

werden (siehe Abbildung 114)

Abbildung 114 Mehrere markierte Elemente

Das geschieht entweder

durch Umrahmung der Elemente mit einem Rechteck nachdem Sie zu-

vor das Steuerelement Zeiger ausgewaumlhlt haben oder

durch Mehrfachauswahl indem Sie ab dem zweiten auszuwaumlhlenden

Steuerelement die (ordf)-Taste (wie fuumlr Groszligbuchstaben) oder die (Strg)-

Taste gedruumlckt halten

Menuuml raquoFormatlaquoUumlber das Menuuml Format haben Sie anschlieszligend folgende Moumlglichkeiten

zur Anpassung der Steuerelemente

Die ausgewaumlhlten Steuerelemente koumlnnen horizontal oder vertikal zu-

einander ausgerichtet werden (Menuuml Format bull Ausrichten)

Auch die horizontalen undoder vertikalen Dimensionen der ausge-

waumlhlten Steuerelemente koumlnnen angeglichen werden (Menuuml Format bull

Groumlsse angleichen)

4493book Seite 31 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

32

Einheitliche

Abstaumlnde

Zudem koumlnnen die horizontalen und vertikalen Abstaumlnde zwischen den

ausgewaumlhlten Steuerelementen angeglichen vergroumlszligert verkleinert

oder entfernt werden (Menuuml Format bull Horizontaler AbstandVer-

tikaler Abstand)

Die Steuerelemente koumlnnen auszligerdem horizontal oder vertikal inner-

halb des Formulars zentriert werden (Menuuml Format bull auf Formular

zentrieren)

Sollten sich die Steuerelemente teilweise uumlberlappen koumlnnen Sie einzel-

ne Steuerelemente in den Vorder- bzw Hintergrund schieben (Menuuml

Format bull Reihenfolge)

Sie koumlnnen alle Steuerelemente gleichzeitig gegen versehentliches Ver-

schieben absichern (Menuuml Format bull Steuerelemente Sperren) Diese

Sperrung gilt nur waumlhrend der Entwicklung des Programms

Abbildung 115 zeigt ein Formular mit drei Buttons die alle linksbuumlndig aus-

gerichtet sind und den gleichen vertikalen Abstand voneinander haben

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 markieren Sie darin

mehrere Steuerelemente und testen Sie anschlieszligend die einzelnen Moumlg-

lichkeiten des Format-Menuumls aus

Abbildung 115 Nach der Formatierung

152 Steuerelemente kopieren

Steuerelemente

kopieren

Zur schnelleren Erzeugung eines Projekts koumlnnen vorhandene Steuerele-

mente einschlieszliglich aller ihrer Eigenschaften kopiert werden Markieren

Sie hierzu die gewuumlnschten Steuerelemente und kopieren Sie sie entweder

4493book Seite 32 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

33

1 uumlber das Menuuml Bearbeiten bull Kopieren und das Menuuml Bearbeiten bull

Einfuumlgen oder

mit den Tastenkombinationen (Strg) + (C) und (Strg) + (V)

Anschlieszligend sollten Sie die neu erzeugten Steuerelemente direkt umbe-

nennen und an den gewuumlnschten Positionen anordnen

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 und kopieren Sie einzel-

ne Steuerelemente Kontrollieren Sie anschlieszligend die Liste der vorhan-

denen Steuerelemente im Eigenschaften-Fenster auf eine einheitliche

Namensgebung

153 Eigenschaften zur Laufzeit aumlndern

Size LocationSteuerelemente haben die Eigenschaften Size (mit den Komponenten

Width und Height) und Location (mit den Komponenten X und Y) zur Anga-

be von Groumlszlige und Position X und Y geben die Koordinaten der oberen lin-

ken Ecke des Steuerelements an gemessen von der oberen linken Ecke des

umgebenden Elements (meist das Formular) Saumlmtliche Werte werden in

Pixeln angegeben

Alle diese Eigenschaften koumlnnen sowohl waumlhrend der Entwicklungszeit als

auch waumlhrend der Laufzeit eines Projekts veraumlndert werden Zur Aumlnderung

waumlhrend der Entwicklungszeit koumlnnen Sie die Eigenschaftswerte wie ge-

wohnt im Eigenschaften-Fenster eingeben Als Beispiel fuumlr Aumlnderungen

waumlhrend der Laufzeit soll hingegen das folgende Programm (Projekt

Steuerelemente) dienen (siehe Abbildung 116)

Abbildung 116 Position und Groumlszlige bestimmen

4493book Seite 33 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

34

Zunaumlchst ein Hinweis zu den benoumltigten Namensraumlumen die oberhalb der

Klasse eingebunden werden

using Systemusing SystemDrawingusing SystemWindowsForms

Listing 15 Projekt raquoSteuerelementelaquo Namensraumlume

Gegenuumlber dem vorherigen Projekt ist noch der Namensraum SystemDra-

wing hinzugekommen der beim Zugriff auf Positions- Groumlszligen- oder Farb-

angaben benoumltigt wird Die drei genannten Namensraumlume reichen bei vie-

len Projekten aus

Es wird nachfolgend generell nur der Teil des Programmcodes angezeigt

der veraumlndert wurde

private void CmdPositionRel_Click()

CmdTestLocation = new Point(CmdTestLocationX + 20 CmdTestLocationY)

private void CmdPositionAbs_Click()

CmdTestLocation = new Point(100 200)private void CmdGroesseRel_Click()

CmdTestSize = new Size(CmdTestSizeWidth + 20 CmdTestSizeHeight)

private void CmdGroesseAbs_Click()

CmdTestSize = new Size(50 100)

Listing 16 Projekt raquoSteuerelementelaquo

4493book Seite 34 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

35

1Zur Erlaumluterung

Verkuumlrzte

Darstellung

Der Kopfteil der einzelnen Methoden wird aus Gruumlnden der Uumlbersicht-

lichkeit jeweils in verkuumlrzter Form abgebildet Das wird bei den meisten

nachfolgenden Beispielen ebenfalls so sein auszliger wenn es genau auf die

Inhalte des Methodenkopfs ankommt

Das Formular enthaumllt fuumlnf Buttons Die oberen vier Buttons dienen der

Veraumlnderung von Position und Groumlszlige des fuumlnften Buttons

Die Position eines Elements kann relativ zur aktuellen Position oder auf

absolute Werte eingestellt werden Das Gleiche gilt fuumlr die Groumlszlige eines

Elements

Bei beiden Angaben handelt es sich um Wertepaare (XY bzw Breite

Houmlhe)

new Point 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 bereitzu-

stellen

X Y Bei Betaumltigung des Buttons Position Abs wird die Position des fuumlnften

Buttons auf die Werte X=100 und Y=200 gestellt jeweils gemessen von der

linken oberen Ecke des Formulars

Bei Betaumltigung des Buttons Position Rel wird die Position des fuumlnften

Buttons auf die Werte X = CmdTestLocationX + 20 und Y = CmdTestLoca-

tionY gestellt Bei X wird also der alte Wert der Komponente X um 20 er-

houmlht das Element bewegt sich nach rechts Bei Y wird der alte Wert der

Komponente Y nicht veraumlndert das Element bewegt sich somit nicht

nach oben oder unten

Size Zur Einstellung der Groumlszlige dient die Struktur Size

Width Height Bei Betaumltigung des Buttons Groumlsse Abs wird die Groumlszlige des fuumlnften But-

tons auf die Werte Width = 50 und Height = 100 gestellt

Bei Betaumltigung des Buttons Groumlsse Rel wird die Groumlszlige des fuumlnften

Buttons auf die Werte Width = CmdTestSizeWidth + 20 und Height = Cmd-

TestSizeHeight gestellt Bei Width wird also der alte Wert der Kompo-

nente Width um 20 erhoumlht das Element wird breiter Bei Height wird der

fruumlhere Wert der Komponente Height nicht veraumlndert das Element ver-

aumlndert seine Houmlhe daher nicht

Nach einigen Klicks sieht das Formular aus wie das in Abbildung 117

4493book Seite 35 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

36

Abbildung 117 Veraumlnderung von Eigenschaften zur Laufzeit

154 Vergabe und Verwendung von Namen

Beachten Sie in allen Programmen dass jedes Steuerelement seinen eige-

nen eindeutigen Namen hat und immer mit diesem Namen angesprochen

werden muss Besonders am Anfang passiert es erfahrungsgemaumlszlig haumlufig

dass ein Programm nur deshalb nicht zum gewuumlnschten Erfolg fuumlhrt weil

ein nicht vorhandener Name verwendet wird In diesem Zusammenhang

moumlchte ich noch einmal auf die Namenskonventionen hinweisen

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 uumlber Typ und Funktion

des Steuerelements Falls Sie beim Schreiben von Programmcode anschlie-

szligend diese Namen z B vollstaumlndig in Kleinbuchstaben eingeben werden

Sie nach Verlassen der Zeile darauf aufmerksam gemacht Sie koumlnnen so

schnell erkennen ob Sie tatsaumlchlich ein vorhandenes Steuerelement ver-

wendet haben

155 Verknuumlpfung von Texten mehrzeilige Texte

+ zur Verkettung Mithilfe des Zeichens + koumlnnen mehrere Texte miteinander verknuumlpft wer-

den Falls ein einzelner Zahlenwert zwischen den Texten steht wird er vor-

her in einen Text umgewandelt Aufgepasst Falls mehrere Zahlenwerte

direkt nacheinander mithilfe des Zeichens + verknuumlpft werden werden sie

zunaumlchst mathematisch addiert

4493book Seite 36 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

37

1nFalls Sie eine mehrzeilige Ausgabe wuumlnschen koumlnnen Sie einen Zeilenvor-

schub mithilfe der Zeichenfolge n (fuumlr new line) erzeugen

Nachfolgend wird das Formular des Projekts Steuerelemente vergroumlszligert

zum Beispiel auf 500 times 400 Anschlieszligend wird es um ein Label ergaumlnzt in

dem die aktuelle Position und Groumlszlige des Buttons angezeigt werden Das

soll nach Betaumltigung des Buttons Anzeige geschehen

private void CmdAnzeige_Click()

LblAnzeigeText = Position X + CmdTestLocationX + Y + CmdTestLocationY + n + Groumlszlige Breite +CmdTestSizeWidth + Houmlhe + CmdTestSizeHeight

Listing 17 Projekt raquoSteuerelementelaquo mit Anzeige

Nach einigen Klicks und der Betaumltigung des Buttons Anzeige sieht das For-

mular aus wie das in Abbildung 118

Abbildung 118 Anzeige der Eigenschaften

156 Eigenschaft BackColor Farben allgemein

BackColorDie Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-

Color festgelegt Dabei koumlnnen Sie die Farbe zur Entwicklungszeit leicht

mithilfe einer Farbpalette oder aus Systemfarben auswaumlhlen

ColorHintergrundfarben und andere Farben koumlnnen Sie auch zur Laufzeit ein-

stellen Dabei bedienen Sie sich der Farbwerte die Sie uumlber die Struktur Co-

lor auswaumlhlen

Ein Beispiel ebenfalls im Projekt Steuerelemente

4493book Seite 37 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

38

private void CmdFarbe_Click()

BackColor = ColorYellowLblAnzeigeBackColor = ColorFromArgb(192 255 0)

Listing 18 Projekt raquoSteuerelementelaquo mit Farben

Zur Erlaumluterung

Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften z B

Yellow Der Wert kann der Eigenschaft BackColor des Steuerelements zu-

gewiesen werden hier aber handelt es sich um das Formular selbst

FromArgb() Auszligerdem bietet die Struktur die Methode FromArgb() Diese koumlnnen Sie

auf verschiedene Arten aufrufen Eine dieser Arten erwartet genau drei

Parameter naumlmlich die Werte fuumlr Rot Gruumln und Blau jeweils zwischen 0

und 255

Das Formular sieht nach der Aumlnderung der Eigenschaft Farbe aus wie das in

Abbildung 119

Abbildung 119 Nach Aumlnderung der Eigenschaft raquoFarbelaquo

4493book Seite 38 Mittwoch 8 Maumlrz 2017 112 13

39

2

Kapitel 2

Grundlagen

In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-

lagen von C in Verbindung mit den gaumlngigen Steuerelementen von

Windows-Programmen

In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

mierung wie Variablen Operatoren Verzweigungen und Schleifen gemein-

sam mit wohlbekannten haumlufig verwendeten Steuerelementen kennen

21 Variablen und Datentypen

Variablen dienen der voruumlbergehenden Speicherung von Daten die sich

waumlhrend der Laufzeit eines Programms aumlndern koumlnnen Eine Variable be-

sitzt einen eindeutigen Namen unter dem sie angesprochen werden kann

211 Namen Werte

NamensregelnFuumlr die Namen von Variablen gelten in C die folgenden Regeln

Sie beginnen mit einem Buchstaben

Sie koumlnnen nur aus Buchstaben Zahlen und einigen wenigen Sonderzei-

chen (wie z B dem Unterstrich _) bestehen

Sie duumlrfen Umlaute oder auch das scharfe szlig enthalten Allerdings kann

das zu Fehlern im Einsatz unter anderssprachigen Umgebungen fuumlhren

Daher rate ich davon ab

Innerhalb eines Guumlltigkeitsbereichs darf es keine zwei Variablen mit

dem gleichen Namen geben (siehe Abschnitt 214)

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

4493book Seite 39 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

1 Einfuumlhrung

16

12 Visual Studio 2017

Community-Version Fuumlr dieses Buch wird die frei verfuumlgbare Entwicklungsumgebung Visual

Studio Community 2017 eingesetzt Sie koumlnnen sie unter Windows 7 bis ein-

schlieszliglich Windows 10 nutzen Diese Version von Visual Studio koumlnnen

Sie bei Microsoft herunterladen (wwwvisualstudiocomde-de) und auf Ih-

rem 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 ausfuumlhrbaren Programme einen Debugger zur Fehler-

suche und vieles mehr

Noch eine Anmerkung in eigener Sache Fuumlr die Hilfe bei der Erstellung die-

ses Buchs bedanke ich mich beim Team des Rheinwerk Verlags besonders

bei Anne Scheibe

Thomas Theis

13 Mein erstes Windows-Programm

Anhand eines ersten Projekts werden Sie nun die verschiedenen Schritte

durchlaufen die zur Erstellung eines einfachen Programms mit C in Visu-

al Studio notwendig sind Das Programm soll nach dem Aufruf zunaumlchst so

aussehen wie in Abbildung 11 gezeigt

Abbildung 11 Erstes Programm nach dem Aufruf

Nach Betaumltigung des Buttons Hallo soll sich der Text in der obersten Zeile

entsprechend veraumlndern (siehe Abbildung 12)

4493book Seite 16 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

17

1

Abbildung 12 Nach einem Klick auf den Button raquoHallolaquo

14 Visual Studio-Entwicklungsumgebung

Waumlhrend der Projekterstellung werden Sie die Visual Studio-Entwicklungs-

umgebung Schritt fuumlr Schritt kennenlernen

141 Ein neues Projekt

Nach dem Aufruf des Programms Visual Studio Community 2017 muumlssen

Sie zur Erstellung eines neuen C-Projekts den Menuumlpunkt Datei bull Neu bull

Projekt ausfuumlhren Anschlieszligend waumlhlen Sie in der Kategorie Instal-

liert bull Vorlagen bull Visual C die Vorlage Windows Forms-App aus Als

Projektname bietet die Entwicklungsumgebung den Namen Windows-

FormsApp1 an dieser sollte geaumlndert werden zum Beispiel in MeinErstes

Nach Betaumltigung der Schaltflaumlche OK erscheinen nun einige Elemente der

Entwicklungsumgebung Folgende sind besonders wichtig

Form Das Benutzerformular (engl Form) enthaumllt die Oberflaumlche fuumlr den Benut-

zer des Programms (siehe Abbildung 13)

Abbildung 13 Benutzerformular

Toolbox Der Werkzeugkasten (engl Toolbox) enthaumllt die Steuerelemente fuumlr

den Benutzer mit denen er den Ablauf des Programms steuern kann Sie

4493book Seite 17 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

18

werden vom Programmentwickler in das Formular eingefuumlgt (siehe Ab-

bildung 14) Sollten in der Toolbox keine Steuerelemente angezeigt wer-

den klicken Sie einmal auf das Benutzerformular und anschlieszligend wie-

der auf die Toolbox Weitere Registerkarten zum Beispiel Server-

Explorer und Datenquellen werden nicht benoumltigt und koumlnnen je-

weils uumlber das Kreuz oben rechts ausgeblendet werden

Abbildung 14 Der raquoWerkzeugkastenlaquo mit verschiedenen

Kategorien von Steuerelementen

Eigenschaften-

Fenster

Das Eigenschaften-Fenster (engl Properties Window) dient dem An-

zeigen und Aumlndern der Eigenschaften von Steuerelementen innerhalb

des Formulars durch den Programmentwickler (siehe Abbildung 15) Ich

empfehle Ihnen sich die Eigenschaften in alphabetischer Reihenfolge

anzeigen zu lassen Betaumltigen Sie dazu einfach unter Form1 das zweite

Symbol von links

Abbildung 15 Eigenschaften-Fenster

Projektmappen-

Explorer

Der Projektmappen-Explorer (engl Solution Explorer) zeigt das geoumlff-

nete Projekt und die darin vorhandenen Elemente (siehe Abbildung 16)

4493book Seite 18 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

19

1

Abbildung 16 Projektmappen-Explorer

Elemente anzeigenSollte der Werkzeugkasten das Eigenschaften-Fenster oder der Pro-

jektmappen-Explorer nicht angezeigt werden koumlnnen Sie das betreffen-

de Element uumlber das Menuuml Ansicht einblenden Ist das Formular nicht

sichtbar blenden Sie es einfach uumlber einen Doppelklick auf den Namen

(Form1cs) im Projektmappen-Explorer ein Sollten die Eigenschaften

eines Steuerelements nicht im bereits sichtbaren Eigenschaften-Fenster

angezeigt werden markieren Sie zunaumlchst den Namen der Formulardatei

(Form1cs) im Projektmappen-Explorer und anschlieszligend das betref-

fende Steuerelement

Anfangs schreiben Sie nur einfache Programme mit wenigen Elementen

daher benoumltigen Sie den Projektmappen-Explorer jetzt noch nicht Es

empfiehlt sich das Eigenschaften-Fenster nach oben zu vergroumlszligern

142 Einfuumlgen von Steuerelementen

Label ButtonZunaumlchst sollen drei Steuerelemente in das Formular eingefuumlgt werden

ein Bezeichnungsfeld (Label) und zwei Befehlsschaltflaumlchen (Buttons) Ein

Bezeichnungsfeld dient im Allgemeinen dazu feste oder veraumlnderliche

Texte auf der Benutzeroberflaumlche anzuzeigen In diesem Programm soll

das Label einen Text anzeigen Ein Button dient zum Starten bestimmter

Programmteile oder allgemeiner ausgedruumlckt zum Ausloumlsen von Ereignis-

sen In diesem Programm sollen die Buttons dazu dienen den Text anzu-

zeigen bzw das Programm zu beenden

Allgemeine

Steuerelemente

Um ein Steuerelement einzufuumlgen ziehen Sie es mithilfe der Maus aus

dem Werkzeugkasten an die gewuumlnschte Stelle im Formular Alle Steuer-

elemente finden sich im Werkzeugkasten unter Alle Windows Forms

4493book Seite 19 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

20

Uumlbersichtlicher ist jedoch der Zugriff uumlber Allgemeine Steuerelemente

(engl Common Controls) siehe Abbildung 17

Abbildung 17 raquoAllgemeine Steuerelementelaquo im raquoWerkzeugkastenlaquo

Steuerelement

auswaumlhlen

Ein Doppelklick auf ein Steuerelement im Werkzeugkasten fuumlgt es

ebenfalls in die Form ein Position und Groumlszlige des Elements koumlnnen an-

schlieszligend noch veraumlndert werden Dazu waumlhlen Sie das betreffende

Steuerelement vorher durch Anklicken aus (siehe Abbildung 18) Ein uumlber-

fluumlssiges Steuerelement koumlnnen Sie durch Auswaumlhlen und Druumlcken der

Taste (Entf) entfernen

Abbildung 18 Ausgewaumlhlter Button

Die Groumlszlige und andere Eigenschaften des Formulars selbst koumlnnen Sie

ebenfalls veraumlndern Dazu waumlhlen Sie es vorher durch Anklicken einer frei-

en Stelle im Formular aus

143 Arbeiten mit dem Eigenschaften-Fenster

Die eingefuumlgten Steuerelemente haben zunaumlchst einheitliche Namen und

Aufschriften diese sollten Sie allerdings zur einfacheren Programment-

wicklung aumlndern Es gibt bestimmte Namenskonventionen die die Les-

barkeit erleichtern Die Namen beinhalten den Typ (mit drei Buchstaben

abgekuumlrzt) und die Aufgabe des Steuerelements (jeweils mit groszligem An-

4493book Seite 20 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

21

1fangsbuchstaben) Aus den Namen der Steuerelemente ergeben sich auch

die Namen der sogenannten Ereignisprozeduren ebenfalls mit groszligem

Anfangsbuchstaben siehe Abschnitt 145 Seit Visual Studio 2017 wird staumlr-

ker auf die Einhaltung der Namenskonventionen geachtet

Cmd Txt Lbl Ein Button (eigentlich Command Button) der die Anzeige der Zeit ausloumlsen

soll wird beispielsweise mit CmdZeit bezeichnet Weitere Vorsilben sind Txt

(TextfeldTextBox) Lbl (BezeichnungsfeldLabel) Opt (Optionsschalt-

flaumlcheRadioButton) Frm (FormularForm) und Chk (Kontrollkaumlstchen

CheckBox)

Zur Aumlnderung des Namens eines Steuerelements muss es zunaumlchst ausge-

waumlhlt werden Das koumlnnen Sie entweder durch Anklicken des Steuerele-

ments auf dem Formular oder durch Auswahl desselben aus der Liste am

oberen Ende des Eigenschaften-Fensters tun

Eigenschaften-

Fenster

Im Eigenschaften-Fenster werden alle Eigenschaften des ausgewaumlhlten

Steuerelements angezeigt Die Liste ist zweispaltig In der linken Spalte

steht der Name der Eigenschaft in der rechten ihr aktueller Wert Die Eigen-

schaft (Name) steht am Anfang der Liste der Eigenschaften Die betreffende

Zeile waumlhlen Sie durch Anklicken aus und geben hier den neuen Namen

ein Nach Bestaumltigung mit der Taste (cent) ist die Eigenschaft geaumlndert (siehe

Abbildung 19)

Abbildung 19 Button nach der Namensaumlnderung

TextDie Aufschrift von Buttons Labels und Formularen ist in der Eigenschaft

Text angegeben Sobald diese Eigenschaft veraumlndert wird erscheint die ver-

aumlnderte Aufschrift in dem betreffenden Steuerelement Auch der Name

und die Aufschrift des Formulars sollten geaumlndert werden Im Folgenden

sind die gewuumlnschten Eigenschaften fuumlr die Steuerelemente dieses Pro-

gramms in Tabellenform angegeben siehe Tabelle 11

4493book Seite 21 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

22

Startzustand Hiermit legen Sie den Startzustand fest also die Eigenschaften welche die

Steuerelemente zu Beginn des Programms bzw eventuell waumlhrend des ge-

samten Programms haben sollen Viele Eigenschaften koumlnnen Sie auch

noch waumlhrend der Laufzeit des Programms durch den Programmcode ver-

aumlndern

Bei einem Label ergibt die Einstellung der Eigenschaft BorderStyle auf

FixedSingle einen Rahmen Zur Aumlnderung auf FixedSingle klappen Sie die

Liste bei der Eigenschaft auf und waumlhlen den betreffenden Eintrag aus sie-

he Abbildung 110 Zur Aumlnderung einiger Eigenschaften muumlssen Sie gegebe-

nenfalls ein Dialogfeld aufrufen

Abbildung 110 Label nach der Aumlnderung von Name und BorderStyle

Typ Eigenschaft Einstellung

Formular Text Mein erstes Programm

Button Name CmdHallo

Text Hallo

Button Name CmdEnde

Text Ende

Label Name LblAnzeige

Text (leer)

BorderStyle FixedSingle

Tabelle 11 Steuerelemente mit Eigenschaften

4493book Seite 22 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

23

1Im Label soll zunaumlchst der Text (leer) erscheinen Hierzu waumlhlen Sie den

vorhandenen Text durch Anklicken aus und aumlndern ihn

Liste der

Steuerelemente

Sie finden alle in diesem Formular vorhandenen Steuerelemente in der Lis-

te die sich am oberen Ende des Eigenschaften-Fensters oumlffnen laumlsst

Dabei zeigt sich ein Vorteil der einheitlichen Namensvergabe Die Steuer-

elemente des gleichen Typs stehen immer direkt untereinander

144 Speichern eines Projekts

Alles speichernDie Daten eines C-Projekts werden innerhalb von Visual Studio in ver-

schiedenen Dateien gespeichert Zum Speichern des gesamten Projekts

verwenden Sie den Menuumlpunkt Datei bull Alles Speichern Diesen Vorgang

sollten Sie in regelmaumlszligigen Abstaumlnden durchfuumlhren damit keine Aumlnderun-

gen verloren gehen koumlnnen

Die in diesem Skript angegebenen Namen erleichtern eine schnelle und

eindeutige Orientierung und das spaumltere Auffinden von aumllteren Pro-

grammen

145 Das Codefenster

EreignisDer Ablauf eines Windows-Programms wird im Wesentlichen durch das

Ausloumlsen von Ereignissen durch den Benutzer gesteuert Er loumlst z B die

Anzeige des Texts Hallo aus indem er auf den Button Hallo klickt Der

Entwickler muss dafuumlr sorgen dass aufgrund dieses Ereignisses auch tat-

saumlchlich der gewuumlnschte 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

EreignismethodeZum Schreiben einer Ereignismethode fuumlhren Sie am besten einen Dop-

pelklick auf dem betreffenden Steuerelement aus Daraufhin erscheint das

Codefenster Zwischen der Formularansicht und der Codeansicht koumlnnen

Sie anschlieszligend uumlber die Menuumlpunkte Ansicht bull Code bzw Ansicht bull

Designer hin- und herschalten Das ist auch uumlber die Registerkarten ober-

halb des Formulars bzw des Codefensters moumlglich (siehe Abbildung 111)

4493book Seite 23 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

24

Abbildung 111 Registerkarten

Nach erfolgtem Doppelklick auf den Button Hallo erscheinen im Code-

fenster die folgenden Eintraumlge

using Systemusing SystemWindowsForms

namespace MeinErstes

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdHallo_Click(object sender EventArgs e)

Listing 11 Projekt raquoMeinErsteslaquo Button raquoHallolaquo ohne Code

Zur Erlaumluterung

Grundsaumltzlich gilt dass Sie sich nicht von der Vielzahl der automatisch

erzeugten Zeilen und den noch unbekannten Inhalten abschrecken las-

sen sollten

Zunaumlchst das Wichtigste Innerhalb der geschweiften Klammern der

Ereignismethode CmdHallo_Click() wird spaumlter Ihr eigener Programm-

code hinzugefuumlgt

4493book Seite 24 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

25

1Zu den anderen Bestandteilen (die erst spaumlter fuumlr das eigene Programmie-

ren wichtig werden)

Namensraum C ist eine objektorientierte Sprache Ein wichtiges Element objektori-

entierter Sprachen sind die so genannten Klassen Klassen eroumlffnen wei-

tere Programmiermoumlglichkeiten Namensraumlume wiederum beinhalten

zusammengehoumlrige Klassen

using In obigem Listing koumlnnen Sie erkennen dass einige Programmzeilen

die mit using beginnen bereits entfernt wurden Das Schluumlsselwort

using dient zum Einbinden von Namensraumlumen in das aktuelle Projekt

Da wir die Klassen in diesen Namensraumlumen nicht benoumltigen wurden

die betreffenden Zeilen entfernt

Seit der Version 2015 von Visual Studio werden solche uumlberfluumlssigen Ele-

mente in grauer Schriftfarbe dargestellt Falls sich der Cursor in einer der

betreffenden Zeilen befindet erscheint links von der Zeile eine gelbe

Gluumlhbirne Platzieren Sie den Mauszeiger uumlber dieser Gluumlhbirne koumlnnen

Sie sich Hinweise dazu anzeigen lassen wie die uumlberfluumlssigen Elemente

ganz entfernt werden koumlnnen

namespace Oberhalb von public partial class und von private void erschei-

nen auszligerdem seit Visual Studio 2015 automatisch weitere Informatio-

nen zur Klasse Form1 und ihren Elementen in kleiner grauer Schrift wie

zum Beispiel 0 references oder 3 references Auch diese koumlnnen wir zu-

naumlchst noch ignorieren

Dieses erste Projekt verfuumlgt uumlber einen eigenen Namensraum (engl

namespace) daher namespace MeinErstes

public partial class Alle Elemente des aktuellen Formulars Form1 stehen innerhalb der

oumlffentlich zugaumlnglichen Klasse Form1 daher public class Form1 Ein Teil

der Elemente steht in dieser Datei ein anderer Teil der ebenfalls auto-

matisch erzeugt wurde steht in einer anderen hier nicht sichtbaren

Datei daher der Zusatz partial (dt teilweise)

Die Methode InitializeComponent() beinhaltet Programmzeilen die das

Aussehen und Verhalten der Steuerelemente des Programms bestim-

men

private void Der Zusatz private bedeutet dass die Ereignismethode CmdHalloClick()

nur in dieser Klasse bekannt ist Mit void wird gekennzeichnet dass die-

se Methode lediglich etwas ausfuumlhrt aber kein Ergebnis zuruumlckliefert

4493book Seite 25 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

26

Auf weitere Einzelheiten dieser automatisch erzeugten Bestandteile

wird zu einem spaumlteren Zeitpunkt eingegangen da es hier noch nicht

notwendig ist und eher verwirren wuumlrde

Der anfaumlnglich ausgefuumlhrte Doppelklick fuumlhrt immer zu dem Ereignis das

am haumlufigsten mit dem betreffenden Steuerelement verbunden wird

Click Das ist beim Button natuumlrlich das Ereignis Click Zu einem Steuerelement

gibt es aber auch noch andere moumlgliche Ereignisse

Bei den nachfolgenden Programmen werden nicht mehr alle Teile des Pro-

grammcodes im Buch abgebildet sondern nur noch

die Teile die vom Entwickler per Codeeingabe erzeugt werden

und die Teile des automatisch erzeugten Codes die wichtig fuumlr das allge-

meine Verstaumlndnis sind

Den vollstaumlndigen Programmcode koumlnnen Sie aber jederzeit betrachten

wenn Sie die Beispielprojekte laden bzw ausprobieren

146 Schreiben von Programmcode

In der Methode CmdHallo_Click() soll eine Befehlszeile eingefuumlgt werden

sodass sie anschlieszligend wie folgt aussieht

private void CmdHallo_Click(object sender EventArgs e)

LblAnzeigeText = Hallo

Listing 12 Projekt raquoMeinErsteslaquo Button raquoHallolaquo mit Code

Der Text muss in Anfuumlhrungszeichen gesetzt werden da C sonst an-

nimmt dass es sich um eine Variable mit dem Namen Hallo handelt

Anweisung Der Inhalt einer Methode setzt sich aus einzelnen Anweisungen zusam-

men die nacheinander ausgefuumlhrt werden Die vorliegende Methode ent-

haumllt nur eine Anweisung in ihr wird mithilfe des Gleichheitszeichens eine

Zuweisung durchgefuumlhrt

Zuweisung Bei einer Zuweisung wird der Ausdruck rechts vom Gleichheitszeichen

ausgewertet und der Variablen der Objekteigenschaft oder der Steuerele-

menteigenschaft links vom Gleichheitszeichen zugewiesen Die Zeichen-

4493book Seite 26 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

27

1kette Hallo wird der Eigenschaft Text des Steuerelements LblAnzeige mit-

tels folgender Schreibweise SteuerelementEigenschaft = Wert zugewiesen

Das fuumlhrt zur Anzeige des Werts

Nach dem Wechsel auf die Formularansicht koumlnnen Sie das naumlchste Steuer-

element auswaumlhlen fuumlr das eine Ereignismethode geschrieben werden soll

Code editierenInnerhalb des Codefensters kann Text mit den gaumlngigen Methoden der

Textverarbeitung editiert kopiert verschoben und geloumlscht werden

In der Ereignismethode CmdEnde_Click() soll der folgende Code stehen

private void CmdEnde_Click(object sender EventArgs e)

Close()

Listing 13 Projekt raquoMeinErsteslaquo Button raquoEndelaquo

Close()Die Methode Close() dient dem Schlieszligen eines Formulars Da es sich um

das einzige Formular dieses Projekts handelt wird dadurch das Programm

beendet und die gesamte Windows-Anwendung geschlossen

Dies waren einige Beispiele zur Aumlnderung der Eigenschaften eines Steuer-

elements zur Laufzeit des Programms durch Programmcode Sie erinnern

sich Zu Beginn hatten wir bereits die Starteigenschaften der Steuerele-

mente im Eigenschaften-Fenster eingestellt

147 Kommentare

Bei laumlngeren Programmen mit vielen Anweisungen gehoumlrt es zum guten

Programmierstil Kommentarzeilen zu schreiben In diesen Zeilen werden

einzelne Anweisungen oder auch laumlngere Bloumlcke von Anweisungen er-

laumlutert damit Sie selbst oder auch ein anderer Programmierer sie spaumlter

leichter nachvollziehen koumlnnen Alle Zeichen innerhalb eines Kommen-

tars werden nicht uumlbersetzt oder ausgefuumlhrt

Kommentar Ein Kommentar beginnt mit der Zeichenkombination endet mit der Zei-

chenkombination und kann sich uumlber mehrere Zeilen erstrecken

KommentarEine andere Moumlglichkeit ergibt sich durch die Zeichenkombination Ein

solcher Kommentar erstreckt sich nur bis zum Ende der Zeile

4493book Seite 27 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

28

Der folgende Programmcode wird um einen Kommentar ergaumlnzt

private void CmdEnde_Click(object sender EventArgs e)

Diese Anweisung beendetdas Programm

Close()

Listing 14 Projekt raquoMeinErsteslaquo Button raquoEndelaquo mit Kommentar

Code aus-

kommentieren

Hier noch ein kleiner Trick Sollen bestimmte Programmzeilen fuumlr einen

Test des Programms kurzfristig nicht ausgefuumlhrt werden koumlnnen Sie sie

auskommentieren indem Sie die Zeichenkombination vor die betreffen-

den Zeilen setzen Das geht sehr schnell indem Sie die betreffende(n)

Zeile(n) markieren und anschlieszligend das entsprechende Symbol in der

Symbolleiste anklicken siehe Abbildung 112 Rechts daneben befindet sich

das Symbol welches die Auskommentierung nach dem Test wieder ruumlck-

gaumlngig macht

Abbildung 112 Kommentar einaus

148 Starten Ausfuumlhren und Beenden des Programms

Programm starten Nach dem Einfuumlgen der Steuerelemente und dem Erstellen der Ereignis-

methoden ist das Programm fertig und kann gestartet werden Dazu

betaumltigen Sie den Start-Button in der Symbolleiste (dreieckiger gruumlner

Pfeil nach rechts) Alternativ starten Sie das Programm uumlber die Funk-

tionstaste (F5) oder den Menuumlpunkt Debuggen bull Debugging Starten

Das Formular erscheint und das Betaumltigen der Buttons fuumlhrt zum pro-

grammierten Ergebnis

Programm beenden Zur regulaumlren Beendigung eines Programms ist der Button mit der Auf-

schrift Ende vorgesehen Moumlchten Sie ein Programm waumlhrend des Verlaufs

vorzeitig abbrechen koumlnnen Sie auch den Ende-Button in der Symbolleiste

(rotes Quadrat) betaumltigen

4493book Seite 28 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

29

1FehlerTritt waumlhrend der Ausfuumlhrung eines Programms ein Fehler auf werden Sie

hierauf hingewiesen und das Codefenster zeigt die entsprechende Ereig-

nismethode sowie die fehlerhafte Zeile an In diesem Fall beenden Sie das

Programm korrigieren den Code und starten das Programm wieder

Programm testenEs ist empfehlenswert das Programm bereits waumlhrend der Entwicklung

mehrmals durch einen Aufruf zu testen und nicht erst wenn das Pro-

gramm vollstaumlndig erstellt worden ist Ein geeigneter Zeitpunkt dazu er-

gibt sich zum Beispiel

nach dem Einfuumlgen der Steuerelemente und dem Zuweisen der Eigen-

schaften die Sie zu Programmbeginn benoumltigen oder

nach dem Erstellen jeder Ereignismethode

149 Ausfuumlhrbares Programm

exe-DateiNach erfolgreichem Test des Programms koumlnnen Sie die ausfuumlhrbare Datei

(exe-Datei) auch auszligerhalb der Entwicklungsumgebung aufrufen Haben

Sie an den Grundeinstellungen nichts veraumlndert und die vorgeschlage-

nen Namen verwendet findet sich die zugehoumlrige exe-Datei des aktuellen

Projekts im Verzeichnis DokumenteVisual Studio 2017ProjectsMeinErs-

tesMeinErstesbinDebug Das Programm kann also ganz normal im Win-

dows-Explorer direkt uumlber Doppelklick gestartet werden

Die Weitergabe eines eigenen Windows-Programms auf einen anderen PC

ist etwas aufwendiger Dieser Vorgang wird im Anhang beschrieben

1410 Schlieszligen und Oumlffnen eines Projekts

Projekt schlieszligenUm ein Projekt zu schlieszligen waumlhlen Sie den Menuumlpunkt Datei bull Projekt-

mappe schliessen Falls Sie Veraumlnderungen vorgenommen haben wer-

den Sie vorher gefragt ob Sie diese Aumlnderungen speichern moumlchten

Wollen Sie die Projektdaten sicherheitshalber zwischendurch speichern ist

das uumlber den Menuumlpunkt Datei bull Alles speichern moumlglich Das ist bei

laumlngeren Entwicklungsphasen sehr zu empfehlen

Projekt oumlffnenZum Oumlffnen eines vorhandenen Projekts waumlhlen Sie den Menuumlpunkt

Datei bull oumlffnen bull Projekt Im darauffolgenden Dialogfeld Projekt oumlff-

nen waumlhlen Sie zunaumlchst das gewuumlnschte Projektverzeichnis aus und an-

schlieszligend die gleichnamige Datei mit der Endung sln

4493book Seite 29 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

30

Alle Beispielprojekte finden Sie auf wwwrheinwerk-verlagde4351 unter

raquoMaterialien zum Buchlaquo zum Download Sollte eines der Projekte einmal

nicht gestartet werden koumlnnen sollten Sie es uumlber den Menuumlpunkt Erstel-

len bull Projektmappe neu erstellen neu erstellen

1411 Uumlbung

Uumlbung UName Erzeugen Sie ein Windows-Programm mit einem Formular das zwei But-

tons und ein Label beinhaltet (siehe Abbildung 113) Bei Betaumltigung des

ersten Buttons erscheint im Label Ihr Name Bei Betaumltigung des zweiten

Buttons wird das Programm beendet Namensvorschlaumlge Projektname

UName Buttons CmdMeinName und CmdEnde Label LblMeinName

Abbildung 113 Uumlbung UName

1412 Empfehlungen fuumlr Zeilenumbruumlche

Zeilenumbruch Zeilenumbruumlche erhoumlhen die Lesbarkeit des Programmcodes Sie koumlnnen

jedoch nicht an jeder Stelle innerhalb einer Anweisung durchgefuumlhrt wer-

den Nachfolgend werden einige Stellen empfohlen

nach einer oumlffnenden Klammer (wie bereits gezeigt)

vor einer schlieszligenden Klammer

nach einem Komma

nach einem Operator und

nach einem Punkt hinter einem Objektnamen

Falls Sie einen Zeilenumbruch innerhalb einer Zeichenkette durchfuumlhren

werden seit Visual Studio 2017 zur Fehlervermeidung beide Teile der Zei-

chenkette automatisch durch Anfuumlhrungszeichen begrenzt und durch den

Verkettungsoperator + (siehe Abschnitt 224) miteinander verbunden

4493book Seite 30 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

31

115 Arbeiten mit Steuerelementen

151 Steuerelemente formatieren

HilfslinienZur besseren Anordnung der Steuerelemente auf dem Formular koumlnnen

Sie sie mithilfe der Maus nach Augenmaszlig verschieben Dabei erscheinen

automatisch Hilfslinien falls das aktuelle Element horizontal oder vertikal

parallel zu einem anderen Element steht

Mehrere Steuerele-

mente markieren

Weitere Moumlglichkeiten bieten die Menuumlpunkte im Menuuml Format In vie-

len Faumlllen muumlssen vorher mehrere Steuerelemente auf einmal markiert

werden (siehe Abbildung 114)

Abbildung 114 Mehrere markierte Elemente

Das geschieht entweder

durch Umrahmung der Elemente mit einem Rechteck nachdem Sie zu-

vor das Steuerelement Zeiger ausgewaumlhlt haben oder

durch Mehrfachauswahl indem Sie ab dem zweiten auszuwaumlhlenden

Steuerelement die (ordf)-Taste (wie fuumlr Groszligbuchstaben) oder die (Strg)-

Taste gedruumlckt halten

Menuuml raquoFormatlaquoUumlber das Menuuml Format haben Sie anschlieszligend folgende Moumlglichkeiten

zur Anpassung der Steuerelemente

Die ausgewaumlhlten Steuerelemente koumlnnen horizontal oder vertikal zu-

einander ausgerichtet werden (Menuuml Format bull Ausrichten)

Auch die horizontalen undoder vertikalen Dimensionen der ausge-

waumlhlten Steuerelemente koumlnnen angeglichen werden (Menuuml Format bull

Groumlsse angleichen)

4493book Seite 31 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

32

Einheitliche

Abstaumlnde

Zudem koumlnnen die horizontalen und vertikalen Abstaumlnde zwischen den

ausgewaumlhlten Steuerelementen angeglichen vergroumlszligert verkleinert

oder entfernt werden (Menuuml Format bull Horizontaler AbstandVer-

tikaler Abstand)

Die Steuerelemente koumlnnen auszligerdem horizontal oder vertikal inner-

halb des Formulars zentriert werden (Menuuml Format bull auf Formular

zentrieren)

Sollten sich die Steuerelemente teilweise uumlberlappen koumlnnen Sie einzel-

ne Steuerelemente in den Vorder- bzw Hintergrund schieben (Menuuml

Format bull Reihenfolge)

Sie koumlnnen alle Steuerelemente gleichzeitig gegen versehentliches Ver-

schieben absichern (Menuuml Format bull Steuerelemente Sperren) Diese

Sperrung gilt nur waumlhrend der Entwicklung des Programms

Abbildung 115 zeigt ein Formular mit drei Buttons die alle linksbuumlndig aus-

gerichtet sind und den gleichen vertikalen Abstand voneinander haben

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 markieren Sie darin

mehrere Steuerelemente und testen Sie anschlieszligend die einzelnen Moumlg-

lichkeiten des Format-Menuumls aus

Abbildung 115 Nach der Formatierung

152 Steuerelemente kopieren

Steuerelemente

kopieren

Zur schnelleren Erzeugung eines Projekts koumlnnen vorhandene Steuerele-

mente einschlieszliglich aller ihrer Eigenschaften kopiert werden Markieren

Sie hierzu die gewuumlnschten Steuerelemente und kopieren Sie sie entweder

4493book Seite 32 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

33

1 uumlber das Menuuml Bearbeiten bull Kopieren und das Menuuml Bearbeiten bull

Einfuumlgen oder

mit den Tastenkombinationen (Strg) + (C) und (Strg) + (V)

Anschlieszligend sollten Sie die neu erzeugten Steuerelemente direkt umbe-

nennen und an den gewuumlnschten Positionen anordnen

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 und kopieren Sie einzel-

ne Steuerelemente Kontrollieren Sie anschlieszligend die Liste der vorhan-

denen Steuerelemente im Eigenschaften-Fenster auf eine einheitliche

Namensgebung

153 Eigenschaften zur Laufzeit aumlndern

Size LocationSteuerelemente haben die Eigenschaften Size (mit den Komponenten

Width und Height) und Location (mit den Komponenten X und Y) zur Anga-

be von Groumlszlige und Position X und Y geben die Koordinaten der oberen lin-

ken Ecke des Steuerelements an gemessen von der oberen linken Ecke des

umgebenden Elements (meist das Formular) Saumlmtliche Werte werden in

Pixeln angegeben

Alle diese Eigenschaften koumlnnen sowohl waumlhrend der Entwicklungszeit als

auch waumlhrend der Laufzeit eines Projekts veraumlndert werden Zur Aumlnderung

waumlhrend der Entwicklungszeit koumlnnen Sie die Eigenschaftswerte wie ge-

wohnt im Eigenschaften-Fenster eingeben Als Beispiel fuumlr Aumlnderungen

waumlhrend der Laufzeit soll hingegen das folgende Programm (Projekt

Steuerelemente) dienen (siehe Abbildung 116)

Abbildung 116 Position und Groumlszlige bestimmen

4493book Seite 33 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

34

Zunaumlchst ein Hinweis zu den benoumltigten Namensraumlumen die oberhalb der

Klasse eingebunden werden

using Systemusing SystemDrawingusing SystemWindowsForms

Listing 15 Projekt raquoSteuerelementelaquo Namensraumlume

Gegenuumlber dem vorherigen Projekt ist noch der Namensraum SystemDra-

wing hinzugekommen der beim Zugriff auf Positions- Groumlszligen- oder Farb-

angaben benoumltigt wird Die drei genannten Namensraumlume reichen bei vie-

len Projekten aus

Es wird nachfolgend generell nur der Teil des Programmcodes angezeigt

der veraumlndert wurde

private void CmdPositionRel_Click()

CmdTestLocation = new Point(CmdTestLocationX + 20 CmdTestLocationY)

private void CmdPositionAbs_Click()

CmdTestLocation = new Point(100 200)private void CmdGroesseRel_Click()

CmdTestSize = new Size(CmdTestSizeWidth + 20 CmdTestSizeHeight)

private void CmdGroesseAbs_Click()

CmdTestSize = new Size(50 100)

Listing 16 Projekt raquoSteuerelementelaquo

4493book Seite 34 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

35

1Zur Erlaumluterung

Verkuumlrzte

Darstellung

Der Kopfteil der einzelnen Methoden wird aus Gruumlnden der Uumlbersicht-

lichkeit jeweils in verkuumlrzter Form abgebildet Das wird bei den meisten

nachfolgenden Beispielen ebenfalls so sein auszliger wenn es genau auf die

Inhalte des Methodenkopfs ankommt

Das Formular enthaumllt fuumlnf Buttons Die oberen vier Buttons dienen der

Veraumlnderung von Position und Groumlszlige des fuumlnften Buttons

Die Position eines Elements kann relativ zur aktuellen Position oder auf

absolute Werte eingestellt werden Das Gleiche gilt fuumlr die Groumlszlige eines

Elements

Bei beiden Angaben handelt es sich um Wertepaare (XY bzw Breite

Houmlhe)

new Point 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 bereitzu-

stellen

X Y Bei Betaumltigung des Buttons Position Abs wird die Position des fuumlnften

Buttons auf die Werte X=100 und Y=200 gestellt jeweils gemessen von der

linken oberen Ecke des Formulars

Bei Betaumltigung des Buttons Position Rel wird die Position des fuumlnften

Buttons auf die Werte X = CmdTestLocationX + 20 und Y = CmdTestLoca-

tionY gestellt Bei X wird also der alte Wert der Komponente X um 20 er-

houmlht das Element bewegt sich nach rechts Bei Y wird der alte Wert der

Komponente Y nicht veraumlndert das Element bewegt sich somit nicht

nach oben oder unten

Size Zur Einstellung der Groumlszlige dient die Struktur Size

Width Height Bei Betaumltigung des Buttons Groumlsse Abs wird die Groumlszlige des fuumlnften But-

tons auf die Werte Width = 50 und Height = 100 gestellt

Bei Betaumltigung des Buttons Groumlsse Rel wird die Groumlszlige des fuumlnften

Buttons auf die Werte Width = CmdTestSizeWidth + 20 und Height = Cmd-

TestSizeHeight gestellt Bei Width wird also der alte Wert der Kompo-

nente Width um 20 erhoumlht das Element wird breiter Bei Height wird der

fruumlhere Wert der Komponente Height nicht veraumlndert das Element ver-

aumlndert seine Houmlhe daher nicht

Nach einigen Klicks sieht das Formular aus wie das in Abbildung 117

4493book Seite 35 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

36

Abbildung 117 Veraumlnderung von Eigenschaften zur Laufzeit

154 Vergabe und Verwendung von Namen

Beachten Sie in allen Programmen dass jedes Steuerelement seinen eige-

nen eindeutigen Namen hat und immer mit diesem Namen angesprochen

werden muss Besonders am Anfang passiert es erfahrungsgemaumlszlig haumlufig

dass ein Programm nur deshalb nicht zum gewuumlnschten Erfolg fuumlhrt weil

ein nicht vorhandener Name verwendet wird In diesem Zusammenhang

moumlchte ich noch einmal auf die Namenskonventionen hinweisen

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 uumlber Typ und Funktion

des Steuerelements Falls Sie beim Schreiben von Programmcode anschlie-

szligend diese Namen z B vollstaumlndig in Kleinbuchstaben eingeben werden

Sie nach Verlassen der Zeile darauf aufmerksam gemacht Sie koumlnnen so

schnell erkennen ob Sie tatsaumlchlich ein vorhandenes Steuerelement ver-

wendet haben

155 Verknuumlpfung von Texten mehrzeilige Texte

+ zur Verkettung Mithilfe des Zeichens + koumlnnen mehrere Texte miteinander verknuumlpft wer-

den Falls ein einzelner Zahlenwert zwischen den Texten steht wird er vor-

her in einen Text umgewandelt Aufgepasst Falls mehrere Zahlenwerte

direkt nacheinander mithilfe des Zeichens + verknuumlpft werden werden sie

zunaumlchst mathematisch addiert

4493book Seite 36 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

37

1nFalls Sie eine mehrzeilige Ausgabe wuumlnschen koumlnnen Sie einen Zeilenvor-

schub mithilfe der Zeichenfolge n (fuumlr new line) erzeugen

Nachfolgend wird das Formular des Projekts Steuerelemente vergroumlszligert

zum Beispiel auf 500 times 400 Anschlieszligend wird es um ein Label ergaumlnzt in

dem die aktuelle Position und Groumlszlige des Buttons angezeigt werden Das

soll nach Betaumltigung des Buttons Anzeige geschehen

private void CmdAnzeige_Click()

LblAnzeigeText = Position X + CmdTestLocationX + Y + CmdTestLocationY + n + Groumlszlige Breite +CmdTestSizeWidth + Houmlhe + CmdTestSizeHeight

Listing 17 Projekt raquoSteuerelementelaquo mit Anzeige

Nach einigen Klicks und der Betaumltigung des Buttons Anzeige sieht das For-

mular aus wie das in Abbildung 118

Abbildung 118 Anzeige der Eigenschaften

156 Eigenschaft BackColor Farben allgemein

BackColorDie Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-

Color festgelegt Dabei koumlnnen Sie die Farbe zur Entwicklungszeit leicht

mithilfe einer Farbpalette oder aus Systemfarben auswaumlhlen

ColorHintergrundfarben und andere Farben koumlnnen Sie auch zur Laufzeit ein-

stellen Dabei bedienen Sie sich der Farbwerte die Sie uumlber die Struktur Co-

lor auswaumlhlen

Ein Beispiel ebenfalls im Projekt Steuerelemente

4493book Seite 37 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

38

private void CmdFarbe_Click()

BackColor = ColorYellowLblAnzeigeBackColor = ColorFromArgb(192 255 0)

Listing 18 Projekt raquoSteuerelementelaquo mit Farben

Zur Erlaumluterung

Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften z B

Yellow Der Wert kann der Eigenschaft BackColor des Steuerelements zu-

gewiesen werden hier aber handelt es sich um das Formular selbst

FromArgb() Auszligerdem bietet die Struktur die Methode FromArgb() Diese koumlnnen Sie

auf verschiedene Arten aufrufen Eine dieser Arten erwartet genau drei

Parameter naumlmlich die Werte fuumlr Rot Gruumln und Blau jeweils zwischen 0

und 255

Das Formular sieht nach der Aumlnderung der Eigenschaft Farbe aus wie das in

Abbildung 119

Abbildung 119 Nach Aumlnderung der Eigenschaft raquoFarbelaquo

4493book Seite 38 Mittwoch 8 Maumlrz 2017 112 13

39

2

Kapitel 2

Grundlagen

In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-

lagen von C in Verbindung mit den gaumlngigen Steuerelementen von

Windows-Programmen

In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

mierung wie Variablen Operatoren Verzweigungen und Schleifen gemein-

sam mit wohlbekannten haumlufig verwendeten Steuerelementen kennen

21 Variablen und Datentypen

Variablen dienen der voruumlbergehenden Speicherung von Daten die sich

waumlhrend der Laufzeit eines Programms aumlndern koumlnnen Eine Variable be-

sitzt einen eindeutigen Namen unter dem sie angesprochen werden kann

211 Namen Werte

NamensregelnFuumlr die Namen von Variablen gelten in C die folgenden Regeln

Sie beginnen mit einem Buchstaben

Sie koumlnnen nur aus Buchstaben Zahlen und einigen wenigen Sonderzei-

chen (wie z B dem Unterstrich _) bestehen

Sie duumlrfen Umlaute oder auch das scharfe szlig enthalten Allerdings kann

das zu Fehlern im Einsatz unter anderssprachigen Umgebungen fuumlhren

Daher rate ich davon ab

Innerhalb eines Guumlltigkeitsbereichs darf es keine zwei Variablen mit

dem gleichen Namen geben (siehe Abschnitt 214)

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

4493book Seite 39 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

1 Einfuumlhrung

18

werden vom Programmentwickler in das Formular eingefuumlgt (siehe Ab-

bildung 14) Sollten in der Toolbox keine Steuerelemente angezeigt wer-

den klicken Sie einmal auf das Benutzerformular und anschlieszligend wie-

der auf die Toolbox Weitere Registerkarten zum Beispiel Server-

Explorer und Datenquellen werden nicht benoumltigt und koumlnnen je-

weils uumlber das Kreuz oben rechts ausgeblendet werden

Abbildung 14 Der raquoWerkzeugkastenlaquo mit verschiedenen

Kategorien von Steuerelementen

Eigenschaften-

Fenster

Das Eigenschaften-Fenster (engl Properties Window) dient dem An-

zeigen und Aumlndern der Eigenschaften von Steuerelementen innerhalb

des Formulars durch den Programmentwickler (siehe Abbildung 15) Ich

empfehle Ihnen sich die Eigenschaften in alphabetischer Reihenfolge

anzeigen zu lassen Betaumltigen Sie dazu einfach unter Form1 das zweite

Symbol von links

Abbildung 15 Eigenschaften-Fenster

Projektmappen-

Explorer

Der Projektmappen-Explorer (engl Solution Explorer) zeigt das geoumlff-

nete Projekt und die darin vorhandenen Elemente (siehe Abbildung 16)

4493book Seite 18 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

19

1

Abbildung 16 Projektmappen-Explorer

Elemente anzeigenSollte der Werkzeugkasten das Eigenschaften-Fenster oder der Pro-

jektmappen-Explorer nicht angezeigt werden koumlnnen Sie das betreffen-

de Element uumlber das Menuuml Ansicht einblenden Ist das Formular nicht

sichtbar blenden Sie es einfach uumlber einen Doppelklick auf den Namen

(Form1cs) im Projektmappen-Explorer ein Sollten die Eigenschaften

eines Steuerelements nicht im bereits sichtbaren Eigenschaften-Fenster

angezeigt werden markieren Sie zunaumlchst den Namen der Formulardatei

(Form1cs) im Projektmappen-Explorer und anschlieszligend das betref-

fende Steuerelement

Anfangs schreiben Sie nur einfache Programme mit wenigen Elementen

daher benoumltigen Sie den Projektmappen-Explorer jetzt noch nicht Es

empfiehlt sich das Eigenschaften-Fenster nach oben zu vergroumlszligern

142 Einfuumlgen von Steuerelementen

Label ButtonZunaumlchst sollen drei Steuerelemente in das Formular eingefuumlgt werden

ein Bezeichnungsfeld (Label) und zwei Befehlsschaltflaumlchen (Buttons) Ein

Bezeichnungsfeld dient im Allgemeinen dazu feste oder veraumlnderliche

Texte auf der Benutzeroberflaumlche anzuzeigen In diesem Programm soll

das Label einen Text anzeigen Ein Button dient zum Starten bestimmter

Programmteile oder allgemeiner ausgedruumlckt zum Ausloumlsen von Ereignis-

sen In diesem Programm sollen die Buttons dazu dienen den Text anzu-

zeigen bzw das Programm zu beenden

Allgemeine

Steuerelemente

Um ein Steuerelement einzufuumlgen ziehen Sie es mithilfe der Maus aus

dem Werkzeugkasten an die gewuumlnschte Stelle im Formular Alle Steuer-

elemente finden sich im Werkzeugkasten unter Alle Windows Forms

4493book Seite 19 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

20

Uumlbersichtlicher ist jedoch der Zugriff uumlber Allgemeine Steuerelemente

(engl Common Controls) siehe Abbildung 17

Abbildung 17 raquoAllgemeine Steuerelementelaquo im raquoWerkzeugkastenlaquo

Steuerelement

auswaumlhlen

Ein Doppelklick auf ein Steuerelement im Werkzeugkasten fuumlgt es

ebenfalls in die Form ein Position und Groumlszlige des Elements koumlnnen an-

schlieszligend noch veraumlndert werden Dazu waumlhlen Sie das betreffende

Steuerelement vorher durch Anklicken aus (siehe Abbildung 18) Ein uumlber-

fluumlssiges Steuerelement koumlnnen Sie durch Auswaumlhlen und Druumlcken der

Taste (Entf) entfernen

Abbildung 18 Ausgewaumlhlter Button

Die Groumlszlige und andere Eigenschaften des Formulars selbst koumlnnen Sie

ebenfalls veraumlndern Dazu waumlhlen Sie es vorher durch Anklicken einer frei-

en Stelle im Formular aus

143 Arbeiten mit dem Eigenschaften-Fenster

Die eingefuumlgten Steuerelemente haben zunaumlchst einheitliche Namen und

Aufschriften diese sollten Sie allerdings zur einfacheren Programment-

wicklung aumlndern Es gibt bestimmte Namenskonventionen die die Les-

barkeit erleichtern Die Namen beinhalten den Typ (mit drei Buchstaben

abgekuumlrzt) und die Aufgabe des Steuerelements (jeweils mit groszligem An-

4493book Seite 20 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

21

1fangsbuchstaben) Aus den Namen der Steuerelemente ergeben sich auch

die Namen der sogenannten Ereignisprozeduren ebenfalls mit groszligem

Anfangsbuchstaben siehe Abschnitt 145 Seit Visual Studio 2017 wird staumlr-

ker auf die Einhaltung der Namenskonventionen geachtet

Cmd Txt Lbl Ein Button (eigentlich Command Button) der die Anzeige der Zeit ausloumlsen

soll wird beispielsweise mit CmdZeit bezeichnet Weitere Vorsilben sind Txt

(TextfeldTextBox) Lbl (BezeichnungsfeldLabel) Opt (Optionsschalt-

flaumlcheRadioButton) Frm (FormularForm) und Chk (Kontrollkaumlstchen

CheckBox)

Zur Aumlnderung des Namens eines Steuerelements muss es zunaumlchst ausge-

waumlhlt werden Das koumlnnen Sie entweder durch Anklicken des Steuerele-

ments auf dem Formular oder durch Auswahl desselben aus der Liste am

oberen Ende des Eigenschaften-Fensters tun

Eigenschaften-

Fenster

Im Eigenschaften-Fenster werden alle Eigenschaften des ausgewaumlhlten

Steuerelements angezeigt Die Liste ist zweispaltig In der linken Spalte

steht der Name der Eigenschaft in der rechten ihr aktueller Wert Die Eigen-

schaft (Name) steht am Anfang der Liste der Eigenschaften Die betreffende

Zeile waumlhlen Sie durch Anklicken aus und geben hier den neuen Namen

ein Nach Bestaumltigung mit der Taste (cent) ist die Eigenschaft geaumlndert (siehe

Abbildung 19)

Abbildung 19 Button nach der Namensaumlnderung

TextDie Aufschrift von Buttons Labels und Formularen ist in der Eigenschaft

Text angegeben Sobald diese Eigenschaft veraumlndert wird erscheint die ver-

aumlnderte Aufschrift in dem betreffenden Steuerelement Auch der Name

und die Aufschrift des Formulars sollten geaumlndert werden Im Folgenden

sind die gewuumlnschten Eigenschaften fuumlr die Steuerelemente dieses Pro-

gramms in Tabellenform angegeben siehe Tabelle 11

4493book Seite 21 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

22

Startzustand Hiermit legen Sie den Startzustand fest also die Eigenschaften welche die

Steuerelemente zu Beginn des Programms bzw eventuell waumlhrend des ge-

samten Programms haben sollen Viele Eigenschaften koumlnnen Sie auch

noch waumlhrend der Laufzeit des Programms durch den Programmcode ver-

aumlndern

Bei einem Label ergibt die Einstellung der Eigenschaft BorderStyle auf

FixedSingle einen Rahmen Zur Aumlnderung auf FixedSingle klappen Sie die

Liste bei der Eigenschaft auf und waumlhlen den betreffenden Eintrag aus sie-

he Abbildung 110 Zur Aumlnderung einiger Eigenschaften muumlssen Sie gegebe-

nenfalls ein Dialogfeld aufrufen

Abbildung 110 Label nach der Aumlnderung von Name und BorderStyle

Typ Eigenschaft Einstellung

Formular Text Mein erstes Programm

Button Name CmdHallo

Text Hallo

Button Name CmdEnde

Text Ende

Label Name LblAnzeige

Text (leer)

BorderStyle FixedSingle

Tabelle 11 Steuerelemente mit Eigenschaften

4493book Seite 22 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

23

1Im Label soll zunaumlchst der Text (leer) erscheinen Hierzu waumlhlen Sie den

vorhandenen Text durch Anklicken aus und aumlndern ihn

Liste der

Steuerelemente

Sie finden alle in diesem Formular vorhandenen Steuerelemente in der Lis-

te die sich am oberen Ende des Eigenschaften-Fensters oumlffnen laumlsst

Dabei zeigt sich ein Vorteil der einheitlichen Namensvergabe Die Steuer-

elemente des gleichen Typs stehen immer direkt untereinander

144 Speichern eines Projekts

Alles speichernDie Daten eines C-Projekts werden innerhalb von Visual Studio in ver-

schiedenen Dateien gespeichert Zum Speichern des gesamten Projekts

verwenden Sie den Menuumlpunkt Datei bull Alles Speichern Diesen Vorgang

sollten Sie in regelmaumlszligigen Abstaumlnden durchfuumlhren damit keine Aumlnderun-

gen verloren gehen koumlnnen

Die in diesem Skript angegebenen Namen erleichtern eine schnelle und

eindeutige Orientierung und das spaumltere Auffinden von aumllteren Pro-

grammen

145 Das Codefenster

EreignisDer Ablauf eines Windows-Programms wird im Wesentlichen durch das

Ausloumlsen von Ereignissen durch den Benutzer gesteuert Er loumlst z B die

Anzeige des Texts Hallo aus indem er auf den Button Hallo klickt Der

Entwickler muss dafuumlr sorgen dass aufgrund dieses Ereignisses auch tat-

saumlchlich der gewuumlnschte 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

EreignismethodeZum Schreiben einer Ereignismethode fuumlhren Sie am besten einen Dop-

pelklick auf dem betreffenden Steuerelement aus Daraufhin erscheint das

Codefenster Zwischen der Formularansicht und der Codeansicht koumlnnen

Sie anschlieszligend uumlber die Menuumlpunkte Ansicht bull Code bzw Ansicht bull

Designer hin- und herschalten Das ist auch uumlber die Registerkarten ober-

halb des Formulars bzw des Codefensters moumlglich (siehe Abbildung 111)

4493book Seite 23 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

24

Abbildung 111 Registerkarten

Nach erfolgtem Doppelklick auf den Button Hallo erscheinen im Code-

fenster die folgenden Eintraumlge

using Systemusing SystemWindowsForms

namespace MeinErstes

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdHallo_Click(object sender EventArgs e)

Listing 11 Projekt raquoMeinErsteslaquo Button raquoHallolaquo ohne Code

Zur Erlaumluterung

Grundsaumltzlich gilt dass Sie sich nicht von der Vielzahl der automatisch

erzeugten Zeilen und den noch unbekannten Inhalten abschrecken las-

sen sollten

Zunaumlchst das Wichtigste Innerhalb der geschweiften Klammern der

Ereignismethode CmdHallo_Click() wird spaumlter Ihr eigener Programm-

code hinzugefuumlgt

4493book Seite 24 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

25

1Zu den anderen Bestandteilen (die erst spaumlter fuumlr das eigene Programmie-

ren wichtig werden)

Namensraum C ist eine objektorientierte Sprache Ein wichtiges Element objektori-

entierter Sprachen sind die so genannten Klassen Klassen eroumlffnen wei-

tere Programmiermoumlglichkeiten Namensraumlume wiederum beinhalten

zusammengehoumlrige Klassen

using In obigem Listing koumlnnen Sie erkennen dass einige Programmzeilen

die mit using beginnen bereits entfernt wurden Das Schluumlsselwort

using dient zum Einbinden von Namensraumlumen in das aktuelle Projekt

Da wir die Klassen in diesen Namensraumlumen nicht benoumltigen wurden

die betreffenden Zeilen entfernt

Seit der Version 2015 von Visual Studio werden solche uumlberfluumlssigen Ele-

mente in grauer Schriftfarbe dargestellt Falls sich der Cursor in einer der

betreffenden Zeilen befindet erscheint links von der Zeile eine gelbe

Gluumlhbirne Platzieren Sie den Mauszeiger uumlber dieser Gluumlhbirne koumlnnen

Sie sich Hinweise dazu anzeigen lassen wie die uumlberfluumlssigen Elemente

ganz entfernt werden koumlnnen

namespace Oberhalb von public partial class und von private void erschei-

nen auszligerdem seit Visual Studio 2015 automatisch weitere Informatio-

nen zur Klasse Form1 und ihren Elementen in kleiner grauer Schrift wie

zum Beispiel 0 references oder 3 references Auch diese koumlnnen wir zu-

naumlchst noch ignorieren

Dieses erste Projekt verfuumlgt uumlber einen eigenen Namensraum (engl

namespace) daher namespace MeinErstes

public partial class Alle Elemente des aktuellen Formulars Form1 stehen innerhalb der

oumlffentlich zugaumlnglichen Klasse Form1 daher public class Form1 Ein Teil

der Elemente steht in dieser Datei ein anderer Teil der ebenfalls auto-

matisch erzeugt wurde steht in einer anderen hier nicht sichtbaren

Datei daher der Zusatz partial (dt teilweise)

Die Methode InitializeComponent() beinhaltet Programmzeilen die das

Aussehen und Verhalten der Steuerelemente des Programms bestim-

men

private void Der Zusatz private bedeutet dass die Ereignismethode CmdHalloClick()

nur in dieser Klasse bekannt ist Mit void wird gekennzeichnet dass die-

se Methode lediglich etwas ausfuumlhrt aber kein Ergebnis zuruumlckliefert

4493book Seite 25 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

26

Auf weitere Einzelheiten dieser automatisch erzeugten Bestandteile

wird zu einem spaumlteren Zeitpunkt eingegangen da es hier noch nicht

notwendig ist und eher verwirren wuumlrde

Der anfaumlnglich ausgefuumlhrte Doppelklick fuumlhrt immer zu dem Ereignis das

am haumlufigsten mit dem betreffenden Steuerelement verbunden wird

Click Das ist beim Button natuumlrlich das Ereignis Click Zu einem Steuerelement

gibt es aber auch noch andere moumlgliche Ereignisse

Bei den nachfolgenden Programmen werden nicht mehr alle Teile des Pro-

grammcodes im Buch abgebildet sondern nur noch

die Teile die vom Entwickler per Codeeingabe erzeugt werden

und die Teile des automatisch erzeugten Codes die wichtig fuumlr das allge-

meine Verstaumlndnis sind

Den vollstaumlndigen Programmcode koumlnnen Sie aber jederzeit betrachten

wenn Sie die Beispielprojekte laden bzw ausprobieren

146 Schreiben von Programmcode

In der Methode CmdHallo_Click() soll eine Befehlszeile eingefuumlgt werden

sodass sie anschlieszligend wie folgt aussieht

private void CmdHallo_Click(object sender EventArgs e)

LblAnzeigeText = Hallo

Listing 12 Projekt raquoMeinErsteslaquo Button raquoHallolaquo mit Code

Der Text muss in Anfuumlhrungszeichen gesetzt werden da C sonst an-

nimmt dass es sich um eine Variable mit dem Namen Hallo handelt

Anweisung Der Inhalt einer Methode setzt sich aus einzelnen Anweisungen zusam-

men die nacheinander ausgefuumlhrt werden Die vorliegende Methode ent-

haumllt nur eine Anweisung in ihr wird mithilfe des Gleichheitszeichens eine

Zuweisung durchgefuumlhrt

Zuweisung Bei einer Zuweisung wird der Ausdruck rechts vom Gleichheitszeichen

ausgewertet und der Variablen der Objekteigenschaft oder der Steuerele-

menteigenschaft links vom Gleichheitszeichen zugewiesen Die Zeichen-

4493book Seite 26 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

27

1kette Hallo wird der Eigenschaft Text des Steuerelements LblAnzeige mit-

tels folgender Schreibweise SteuerelementEigenschaft = Wert zugewiesen

Das fuumlhrt zur Anzeige des Werts

Nach dem Wechsel auf die Formularansicht koumlnnen Sie das naumlchste Steuer-

element auswaumlhlen fuumlr das eine Ereignismethode geschrieben werden soll

Code editierenInnerhalb des Codefensters kann Text mit den gaumlngigen Methoden der

Textverarbeitung editiert kopiert verschoben und geloumlscht werden

In der Ereignismethode CmdEnde_Click() soll der folgende Code stehen

private void CmdEnde_Click(object sender EventArgs e)

Close()

Listing 13 Projekt raquoMeinErsteslaquo Button raquoEndelaquo

Close()Die Methode Close() dient dem Schlieszligen eines Formulars Da es sich um

das einzige Formular dieses Projekts handelt wird dadurch das Programm

beendet und die gesamte Windows-Anwendung geschlossen

Dies waren einige Beispiele zur Aumlnderung der Eigenschaften eines Steuer-

elements zur Laufzeit des Programms durch Programmcode Sie erinnern

sich Zu Beginn hatten wir bereits die Starteigenschaften der Steuerele-

mente im Eigenschaften-Fenster eingestellt

147 Kommentare

Bei laumlngeren Programmen mit vielen Anweisungen gehoumlrt es zum guten

Programmierstil Kommentarzeilen zu schreiben In diesen Zeilen werden

einzelne Anweisungen oder auch laumlngere Bloumlcke von Anweisungen er-

laumlutert damit Sie selbst oder auch ein anderer Programmierer sie spaumlter

leichter nachvollziehen koumlnnen Alle Zeichen innerhalb eines Kommen-

tars werden nicht uumlbersetzt oder ausgefuumlhrt

Kommentar Ein Kommentar beginnt mit der Zeichenkombination endet mit der Zei-

chenkombination und kann sich uumlber mehrere Zeilen erstrecken

KommentarEine andere Moumlglichkeit ergibt sich durch die Zeichenkombination Ein

solcher Kommentar erstreckt sich nur bis zum Ende der Zeile

4493book Seite 27 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

28

Der folgende Programmcode wird um einen Kommentar ergaumlnzt

private void CmdEnde_Click(object sender EventArgs e)

Diese Anweisung beendetdas Programm

Close()

Listing 14 Projekt raquoMeinErsteslaquo Button raquoEndelaquo mit Kommentar

Code aus-

kommentieren

Hier noch ein kleiner Trick Sollen bestimmte Programmzeilen fuumlr einen

Test des Programms kurzfristig nicht ausgefuumlhrt werden koumlnnen Sie sie

auskommentieren indem Sie die Zeichenkombination vor die betreffen-

den Zeilen setzen Das geht sehr schnell indem Sie die betreffende(n)

Zeile(n) markieren und anschlieszligend das entsprechende Symbol in der

Symbolleiste anklicken siehe Abbildung 112 Rechts daneben befindet sich

das Symbol welches die Auskommentierung nach dem Test wieder ruumlck-

gaumlngig macht

Abbildung 112 Kommentar einaus

148 Starten Ausfuumlhren und Beenden des Programms

Programm starten Nach dem Einfuumlgen der Steuerelemente und dem Erstellen der Ereignis-

methoden ist das Programm fertig und kann gestartet werden Dazu

betaumltigen Sie den Start-Button in der Symbolleiste (dreieckiger gruumlner

Pfeil nach rechts) Alternativ starten Sie das Programm uumlber die Funk-

tionstaste (F5) oder den Menuumlpunkt Debuggen bull Debugging Starten

Das Formular erscheint und das Betaumltigen der Buttons fuumlhrt zum pro-

grammierten Ergebnis

Programm beenden Zur regulaumlren Beendigung eines Programms ist der Button mit der Auf-

schrift Ende vorgesehen Moumlchten Sie ein Programm waumlhrend des Verlaufs

vorzeitig abbrechen koumlnnen Sie auch den Ende-Button in der Symbolleiste

(rotes Quadrat) betaumltigen

4493book Seite 28 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

29

1FehlerTritt waumlhrend der Ausfuumlhrung eines Programms ein Fehler auf werden Sie

hierauf hingewiesen und das Codefenster zeigt die entsprechende Ereig-

nismethode sowie die fehlerhafte Zeile an In diesem Fall beenden Sie das

Programm korrigieren den Code und starten das Programm wieder

Programm testenEs ist empfehlenswert das Programm bereits waumlhrend der Entwicklung

mehrmals durch einen Aufruf zu testen und nicht erst wenn das Pro-

gramm vollstaumlndig erstellt worden ist Ein geeigneter Zeitpunkt dazu er-

gibt sich zum Beispiel

nach dem Einfuumlgen der Steuerelemente und dem Zuweisen der Eigen-

schaften die Sie zu Programmbeginn benoumltigen oder

nach dem Erstellen jeder Ereignismethode

149 Ausfuumlhrbares Programm

exe-DateiNach erfolgreichem Test des Programms koumlnnen Sie die ausfuumlhrbare Datei

(exe-Datei) auch auszligerhalb der Entwicklungsumgebung aufrufen Haben

Sie an den Grundeinstellungen nichts veraumlndert und die vorgeschlage-

nen Namen verwendet findet sich die zugehoumlrige exe-Datei des aktuellen

Projekts im Verzeichnis DokumenteVisual Studio 2017ProjectsMeinErs-

tesMeinErstesbinDebug Das Programm kann also ganz normal im Win-

dows-Explorer direkt uumlber Doppelklick gestartet werden

Die Weitergabe eines eigenen Windows-Programms auf einen anderen PC

ist etwas aufwendiger Dieser Vorgang wird im Anhang beschrieben

1410 Schlieszligen und Oumlffnen eines Projekts

Projekt schlieszligenUm ein Projekt zu schlieszligen waumlhlen Sie den Menuumlpunkt Datei bull Projekt-

mappe schliessen Falls Sie Veraumlnderungen vorgenommen haben wer-

den Sie vorher gefragt ob Sie diese Aumlnderungen speichern moumlchten

Wollen Sie die Projektdaten sicherheitshalber zwischendurch speichern ist

das uumlber den Menuumlpunkt Datei bull Alles speichern moumlglich Das ist bei

laumlngeren Entwicklungsphasen sehr zu empfehlen

Projekt oumlffnenZum Oumlffnen eines vorhandenen Projekts waumlhlen Sie den Menuumlpunkt

Datei bull oumlffnen bull Projekt Im darauffolgenden Dialogfeld Projekt oumlff-

nen waumlhlen Sie zunaumlchst das gewuumlnschte Projektverzeichnis aus und an-

schlieszligend die gleichnamige Datei mit der Endung sln

4493book Seite 29 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

30

Alle Beispielprojekte finden Sie auf wwwrheinwerk-verlagde4351 unter

raquoMaterialien zum Buchlaquo zum Download Sollte eines der Projekte einmal

nicht gestartet werden koumlnnen sollten Sie es uumlber den Menuumlpunkt Erstel-

len bull Projektmappe neu erstellen neu erstellen

1411 Uumlbung

Uumlbung UName Erzeugen Sie ein Windows-Programm mit einem Formular das zwei But-

tons und ein Label beinhaltet (siehe Abbildung 113) Bei Betaumltigung des

ersten Buttons erscheint im Label Ihr Name Bei Betaumltigung des zweiten

Buttons wird das Programm beendet Namensvorschlaumlge Projektname

UName Buttons CmdMeinName und CmdEnde Label LblMeinName

Abbildung 113 Uumlbung UName

1412 Empfehlungen fuumlr Zeilenumbruumlche

Zeilenumbruch Zeilenumbruumlche erhoumlhen die Lesbarkeit des Programmcodes Sie koumlnnen

jedoch nicht an jeder Stelle innerhalb einer Anweisung durchgefuumlhrt wer-

den Nachfolgend werden einige Stellen empfohlen

nach einer oumlffnenden Klammer (wie bereits gezeigt)

vor einer schlieszligenden Klammer

nach einem Komma

nach einem Operator und

nach einem Punkt hinter einem Objektnamen

Falls Sie einen Zeilenumbruch innerhalb einer Zeichenkette durchfuumlhren

werden seit Visual Studio 2017 zur Fehlervermeidung beide Teile der Zei-

chenkette automatisch durch Anfuumlhrungszeichen begrenzt und durch den

Verkettungsoperator + (siehe Abschnitt 224) miteinander verbunden

4493book Seite 30 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

31

115 Arbeiten mit Steuerelementen

151 Steuerelemente formatieren

HilfslinienZur besseren Anordnung der Steuerelemente auf dem Formular koumlnnen

Sie sie mithilfe der Maus nach Augenmaszlig verschieben Dabei erscheinen

automatisch Hilfslinien falls das aktuelle Element horizontal oder vertikal

parallel zu einem anderen Element steht

Mehrere Steuerele-

mente markieren

Weitere Moumlglichkeiten bieten die Menuumlpunkte im Menuuml Format In vie-

len Faumlllen muumlssen vorher mehrere Steuerelemente auf einmal markiert

werden (siehe Abbildung 114)

Abbildung 114 Mehrere markierte Elemente

Das geschieht entweder

durch Umrahmung der Elemente mit einem Rechteck nachdem Sie zu-

vor das Steuerelement Zeiger ausgewaumlhlt haben oder

durch Mehrfachauswahl indem Sie ab dem zweiten auszuwaumlhlenden

Steuerelement die (ordf)-Taste (wie fuumlr Groszligbuchstaben) oder die (Strg)-

Taste gedruumlckt halten

Menuuml raquoFormatlaquoUumlber das Menuuml Format haben Sie anschlieszligend folgende Moumlglichkeiten

zur Anpassung der Steuerelemente

Die ausgewaumlhlten Steuerelemente koumlnnen horizontal oder vertikal zu-

einander ausgerichtet werden (Menuuml Format bull Ausrichten)

Auch die horizontalen undoder vertikalen Dimensionen der ausge-

waumlhlten Steuerelemente koumlnnen angeglichen werden (Menuuml Format bull

Groumlsse angleichen)

4493book Seite 31 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

32

Einheitliche

Abstaumlnde

Zudem koumlnnen die horizontalen und vertikalen Abstaumlnde zwischen den

ausgewaumlhlten Steuerelementen angeglichen vergroumlszligert verkleinert

oder entfernt werden (Menuuml Format bull Horizontaler AbstandVer-

tikaler Abstand)

Die Steuerelemente koumlnnen auszligerdem horizontal oder vertikal inner-

halb des Formulars zentriert werden (Menuuml Format bull auf Formular

zentrieren)

Sollten sich die Steuerelemente teilweise uumlberlappen koumlnnen Sie einzel-

ne Steuerelemente in den Vorder- bzw Hintergrund schieben (Menuuml

Format bull Reihenfolge)

Sie koumlnnen alle Steuerelemente gleichzeitig gegen versehentliches Ver-

schieben absichern (Menuuml Format bull Steuerelemente Sperren) Diese

Sperrung gilt nur waumlhrend der Entwicklung des Programms

Abbildung 115 zeigt ein Formular mit drei Buttons die alle linksbuumlndig aus-

gerichtet sind und den gleichen vertikalen Abstand voneinander haben

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 markieren Sie darin

mehrere Steuerelemente und testen Sie anschlieszligend die einzelnen Moumlg-

lichkeiten des Format-Menuumls aus

Abbildung 115 Nach der Formatierung

152 Steuerelemente kopieren

Steuerelemente

kopieren

Zur schnelleren Erzeugung eines Projekts koumlnnen vorhandene Steuerele-

mente einschlieszliglich aller ihrer Eigenschaften kopiert werden Markieren

Sie hierzu die gewuumlnschten Steuerelemente und kopieren Sie sie entweder

4493book Seite 32 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

33

1 uumlber das Menuuml Bearbeiten bull Kopieren und das Menuuml Bearbeiten bull

Einfuumlgen oder

mit den Tastenkombinationen (Strg) + (C) und (Strg) + (V)

Anschlieszligend sollten Sie die neu erzeugten Steuerelemente direkt umbe-

nennen und an den gewuumlnschten Positionen anordnen

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 und kopieren Sie einzel-

ne Steuerelemente Kontrollieren Sie anschlieszligend die Liste der vorhan-

denen Steuerelemente im Eigenschaften-Fenster auf eine einheitliche

Namensgebung

153 Eigenschaften zur Laufzeit aumlndern

Size LocationSteuerelemente haben die Eigenschaften Size (mit den Komponenten

Width und Height) und Location (mit den Komponenten X und Y) zur Anga-

be von Groumlszlige und Position X und Y geben die Koordinaten der oberen lin-

ken Ecke des Steuerelements an gemessen von der oberen linken Ecke des

umgebenden Elements (meist das Formular) Saumlmtliche Werte werden in

Pixeln angegeben

Alle diese Eigenschaften koumlnnen sowohl waumlhrend der Entwicklungszeit als

auch waumlhrend der Laufzeit eines Projekts veraumlndert werden Zur Aumlnderung

waumlhrend der Entwicklungszeit koumlnnen Sie die Eigenschaftswerte wie ge-

wohnt im Eigenschaften-Fenster eingeben Als Beispiel fuumlr Aumlnderungen

waumlhrend der Laufzeit soll hingegen das folgende Programm (Projekt

Steuerelemente) dienen (siehe Abbildung 116)

Abbildung 116 Position und Groumlszlige bestimmen

4493book Seite 33 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

34

Zunaumlchst ein Hinweis zu den benoumltigten Namensraumlumen die oberhalb der

Klasse eingebunden werden

using Systemusing SystemDrawingusing SystemWindowsForms

Listing 15 Projekt raquoSteuerelementelaquo Namensraumlume

Gegenuumlber dem vorherigen Projekt ist noch der Namensraum SystemDra-

wing hinzugekommen der beim Zugriff auf Positions- Groumlszligen- oder Farb-

angaben benoumltigt wird Die drei genannten Namensraumlume reichen bei vie-

len Projekten aus

Es wird nachfolgend generell nur der Teil des Programmcodes angezeigt

der veraumlndert wurde

private void CmdPositionRel_Click()

CmdTestLocation = new Point(CmdTestLocationX + 20 CmdTestLocationY)

private void CmdPositionAbs_Click()

CmdTestLocation = new Point(100 200)private void CmdGroesseRel_Click()

CmdTestSize = new Size(CmdTestSizeWidth + 20 CmdTestSizeHeight)

private void CmdGroesseAbs_Click()

CmdTestSize = new Size(50 100)

Listing 16 Projekt raquoSteuerelementelaquo

4493book Seite 34 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

35

1Zur Erlaumluterung

Verkuumlrzte

Darstellung

Der Kopfteil der einzelnen Methoden wird aus Gruumlnden der Uumlbersicht-

lichkeit jeweils in verkuumlrzter Form abgebildet Das wird bei den meisten

nachfolgenden Beispielen ebenfalls so sein auszliger wenn es genau auf die

Inhalte des Methodenkopfs ankommt

Das Formular enthaumllt fuumlnf Buttons Die oberen vier Buttons dienen der

Veraumlnderung von Position und Groumlszlige des fuumlnften Buttons

Die Position eines Elements kann relativ zur aktuellen Position oder auf

absolute Werte eingestellt werden Das Gleiche gilt fuumlr die Groumlszlige eines

Elements

Bei beiden Angaben handelt es sich um Wertepaare (XY bzw Breite

Houmlhe)

new Point 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 bereitzu-

stellen

X Y Bei Betaumltigung des Buttons Position Abs wird die Position des fuumlnften

Buttons auf die Werte X=100 und Y=200 gestellt jeweils gemessen von der

linken oberen Ecke des Formulars

Bei Betaumltigung des Buttons Position Rel wird die Position des fuumlnften

Buttons auf die Werte X = CmdTestLocationX + 20 und Y = CmdTestLoca-

tionY gestellt Bei X wird also der alte Wert der Komponente X um 20 er-

houmlht das Element bewegt sich nach rechts Bei Y wird der alte Wert der

Komponente Y nicht veraumlndert das Element bewegt sich somit nicht

nach oben oder unten

Size Zur Einstellung der Groumlszlige dient die Struktur Size

Width Height Bei Betaumltigung des Buttons Groumlsse Abs wird die Groumlszlige des fuumlnften But-

tons auf die Werte Width = 50 und Height = 100 gestellt

Bei Betaumltigung des Buttons Groumlsse Rel wird die Groumlszlige des fuumlnften

Buttons auf die Werte Width = CmdTestSizeWidth + 20 und Height = Cmd-

TestSizeHeight gestellt Bei Width wird also der alte Wert der Kompo-

nente Width um 20 erhoumlht das Element wird breiter Bei Height wird der

fruumlhere Wert der Komponente Height nicht veraumlndert das Element ver-

aumlndert seine Houmlhe daher nicht

Nach einigen Klicks sieht das Formular aus wie das in Abbildung 117

4493book Seite 35 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

36

Abbildung 117 Veraumlnderung von Eigenschaften zur Laufzeit

154 Vergabe und Verwendung von Namen

Beachten Sie in allen Programmen dass jedes Steuerelement seinen eige-

nen eindeutigen Namen hat und immer mit diesem Namen angesprochen

werden muss Besonders am Anfang passiert es erfahrungsgemaumlszlig haumlufig

dass ein Programm nur deshalb nicht zum gewuumlnschten Erfolg fuumlhrt weil

ein nicht vorhandener Name verwendet wird In diesem Zusammenhang

moumlchte ich noch einmal auf die Namenskonventionen hinweisen

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 uumlber Typ und Funktion

des Steuerelements Falls Sie beim Schreiben von Programmcode anschlie-

szligend diese Namen z B vollstaumlndig in Kleinbuchstaben eingeben werden

Sie nach Verlassen der Zeile darauf aufmerksam gemacht Sie koumlnnen so

schnell erkennen ob Sie tatsaumlchlich ein vorhandenes Steuerelement ver-

wendet haben

155 Verknuumlpfung von Texten mehrzeilige Texte

+ zur Verkettung Mithilfe des Zeichens + koumlnnen mehrere Texte miteinander verknuumlpft wer-

den Falls ein einzelner Zahlenwert zwischen den Texten steht wird er vor-

her in einen Text umgewandelt Aufgepasst Falls mehrere Zahlenwerte

direkt nacheinander mithilfe des Zeichens + verknuumlpft werden werden sie

zunaumlchst mathematisch addiert

4493book Seite 36 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

37

1nFalls Sie eine mehrzeilige Ausgabe wuumlnschen koumlnnen Sie einen Zeilenvor-

schub mithilfe der Zeichenfolge n (fuumlr new line) erzeugen

Nachfolgend wird das Formular des Projekts Steuerelemente vergroumlszligert

zum Beispiel auf 500 times 400 Anschlieszligend wird es um ein Label ergaumlnzt in

dem die aktuelle Position und Groumlszlige des Buttons angezeigt werden Das

soll nach Betaumltigung des Buttons Anzeige geschehen

private void CmdAnzeige_Click()

LblAnzeigeText = Position X + CmdTestLocationX + Y + CmdTestLocationY + n + Groumlszlige Breite +CmdTestSizeWidth + Houmlhe + CmdTestSizeHeight

Listing 17 Projekt raquoSteuerelementelaquo mit Anzeige

Nach einigen Klicks und der Betaumltigung des Buttons Anzeige sieht das For-

mular aus wie das in Abbildung 118

Abbildung 118 Anzeige der Eigenschaften

156 Eigenschaft BackColor Farben allgemein

BackColorDie Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-

Color festgelegt Dabei koumlnnen Sie die Farbe zur Entwicklungszeit leicht

mithilfe einer Farbpalette oder aus Systemfarben auswaumlhlen

ColorHintergrundfarben und andere Farben koumlnnen Sie auch zur Laufzeit ein-

stellen Dabei bedienen Sie sich der Farbwerte die Sie uumlber die Struktur Co-

lor auswaumlhlen

Ein Beispiel ebenfalls im Projekt Steuerelemente

4493book Seite 37 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

38

private void CmdFarbe_Click()

BackColor = ColorYellowLblAnzeigeBackColor = ColorFromArgb(192 255 0)

Listing 18 Projekt raquoSteuerelementelaquo mit Farben

Zur Erlaumluterung

Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften z B

Yellow Der Wert kann der Eigenschaft BackColor des Steuerelements zu-

gewiesen werden hier aber handelt es sich um das Formular selbst

FromArgb() Auszligerdem bietet die Struktur die Methode FromArgb() Diese koumlnnen Sie

auf verschiedene Arten aufrufen Eine dieser Arten erwartet genau drei

Parameter naumlmlich die Werte fuumlr Rot Gruumln und Blau jeweils zwischen 0

und 255

Das Formular sieht nach der Aumlnderung der Eigenschaft Farbe aus wie das in

Abbildung 119

Abbildung 119 Nach Aumlnderung der Eigenschaft raquoFarbelaquo

4493book Seite 38 Mittwoch 8 Maumlrz 2017 112 13

39

2

Kapitel 2

Grundlagen

In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-

lagen von C in Verbindung mit den gaumlngigen Steuerelementen von

Windows-Programmen

In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

mierung wie Variablen Operatoren Verzweigungen und Schleifen gemein-

sam mit wohlbekannten haumlufig verwendeten Steuerelementen kennen

21 Variablen und Datentypen

Variablen dienen der voruumlbergehenden Speicherung von Daten die sich

waumlhrend der Laufzeit eines Programms aumlndern koumlnnen Eine Variable be-

sitzt einen eindeutigen Namen unter dem sie angesprochen werden kann

211 Namen Werte

NamensregelnFuumlr die Namen von Variablen gelten in C die folgenden Regeln

Sie beginnen mit einem Buchstaben

Sie koumlnnen nur aus Buchstaben Zahlen und einigen wenigen Sonderzei-

chen (wie z B dem Unterstrich _) bestehen

Sie duumlrfen Umlaute oder auch das scharfe szlig enthalten Allerdings kann

das zu Fehlern im Einsatz unter anderssprachigen Umgebungen fuumlhren

Daher rate ich davon ab

Innerhalb eines Guumlltigkeitsbereichs darf es keine zwei Variablen mit

dem gleichen Namen geben (siehe Abschnitt 214)

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

4493book Seite 39 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

1 Einfuumlhrung

20

Uumlbersichtlicher ist jedoch der Zugriff uumlber Allgemeine Steuerelemente

(engl Common Controls) siehe Abbildung 17

Abbildung 17 raquoAllgemeine Steuerelementelaquo im raquoWerkzeugkastenlaquo

Steuerelement

auswaumlhlen

Ein Doppelklick auf ein Steuerelement im Werkzeugkasten fuumlgt es

ebenfalls in die Form ein Position und Groumlszlige des Elements koumlnnen an-

schlieszligend noch veraumlndert werden Dazu waumlhlen Sie das betreffende

Steuerelement vorher durch Anklicken aus (siehe Abbildung 18) Ein uumlber-

fluumlssiges Steuerelement koumlnnen Sie durch Auswaumlhlen und Druumlcken der

Taste (Entf) entfernen

Abbildung 18 Ausgewaumlhlter Button

Die Groumlszlige und andere Eigenschaften des Formulars selbst koumlnnen Sie

ebenfalls veraumlndern Dazu waumlhlen Sie es vorher durch Anklicken einer frei-

en Stelle im Formular aus

143 Arbeiten mit dem Eigenschaften-Fenster

Die eingefuumlgten Steuerelemente haben zunaumlchst einheitliche Namen und

Aufschriften diese sollten Sie allerdings zur einfacheren Programment-

wicklung aumlndern Es gibt bestimmte Namenskonventionen die die Les-

barkeit erleichtern Die Namen beinhalten den Typ (mit drei Buchstaben

abgekuumlrzt) und die Aufgabe des Steuerelements (jeweils mit groszligem An-

4493book Seite 20 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

21

1fangsbuchstaben) Aus den Namen der Steuerelemente ergeben sich auch

die Namen der sogenannten Ereignisprozeduren ebenfalls mit groszligem

Anfangsbuchstaben siehe Abschnitt 145 Seit Visual Studio 2017 wird staumlr-

ker auf die Einhaltung der Namenskonventionen geachtet

Cmd Txt Lbl Ein Button (eigentlich Command Button) der die Anzeige der Zeit ausloumlsen

soll wird beispielsweise mit CmdZeit bezeichnet Weitere Vorsilben sind Txt

(TextfeldTextBox) Lbl (BezeichnungsfeldLabel) Opt (Optionsschalt-

flaumlcheRadioButton) Frm (FormularForm) und Chk (Kontrollkaumlstchen

CheckBox)

Zur Aumlnderung des Namens eines Steuerelements muss es zunaumlchst ausge-

waumlhlt werden Das koumlnnen Sie entweder durch Anklicken des Steuerele-

ments auf dem Formular oder durch Auswahl desselben aus der Liste am

oberen Ende des Eigenschaften-Fensters tun

Eigenschaften-

Fenster

Im Eigenschaften-Fenster werden alle Eigenschaften des ausgewaumlhlten

Steuerelements angezeigt Die Liste ist zweispaltig In der linken Spalte

steht der Name der Eigenschaft in der rechten ihr aktueller Wert Die Eigen-

schaft (Name) steht am Anfang der Liste der Eigenschaften Die betreffende

Zeile waumlhlen Sie durch Anklicken aus und geben hier den neuen Namen

ein Nach Bestaumltigung mit der Taste (cent) ist die Eigenschaft geaumlndert (siehe

Abbildung 19)

Abbildung 19 Button nach der Namensaumlnderung

TextDie Aufschrift von Buttons Labels und Formularen ist in der Eigenschaft

Text angegeben Sobald diese Eigenschaft veraumlndert wird erscheint die ver-

aumlnderte Aufschrift in dem betreffenden Steuerelement Auch der Name

und die Aufschrift des Formulars sollten geaumlndert werden Im Folgenden

sind die gewuumlnschten Eigenschaften fuumlr die Steuerelemente dieses Pro-

gramms in Tabellenform angegeben siehe Tabelle 11

4493book Seite 21 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

22

Startzustand Hiermit legen Sie den Startzustand fest also die Eigenschaften welche die

Steuerelemente zu Beginn des Programms bzw eventuell waumlhrend des ge-

samten Programms haben sollen Viele Eigenschaften koumlnnen Sie auch

noch waumlhrend der Laufzeit des Programms durch den Programmcode ver-

aumlndern

Bei einem Label ergibt die Einstellung der Eigenschaft BorderStyle auf

FixedSingle einen Rahmen Zur Aumlnderung auf FixedSingle klappen Sie die

Liste bei der Eigenschaft auf und waumlhlen den betreffenden Eintrag aus sie-

he Abbildung 110 Zur Aumlnderung einiger Eigenschaften muumlssen Sie gegebe-

nenfalls ein Dialogfeld aufrufen

Abbildung 110 Label nach der Aumlnderung von Name und BorderStyle

Typ Eigenschaft Einstellung

Formular Text Mein erstes Programm

Button Name CmdHallo

Text Hallo

Button Name CmdEnde

Text Ende

Label Name LblAnzeige

Text (leer)

BorderStyle FixedSingle

Tabelle 11 Steuerelemente mit Eigenschaften

4493book Seite 22 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

23

1Im Label soll zunaumlchst der Text (leer) erscheinen Hierzu waumlhlen Sie den

vorhandenen Text durch Anklicken aus und aumlndern ihn

Liste der

Steuerelemente

Sie finden alle in diesem Formular vorhandenen Steuerelemente in der Lis-

te die sich am oberen Ende des Eigenschaften-Fensters oumlffnen laumlsst

Dabei zeigt sich ein Vorteil der einheitlichen Namensvergabe Die Steuer-

elemente des gleichen Typs stehen immer direkt untereinander

144 Speichern eines Projekts

Alles speichernDie Daten eines C-Projekts werden innerhalb von Visual Studio in ver-

schiedenen Dateien gespeichert Zum Speichern des gesamten Projekts

verwenden Sie den Menuumlpunkt Datei bull Alles Speichern Diesen Vorgang

sollten Sie in regelmaumlszligigen Abstaumlnden durchfuumlhren damit keine Aumlnderun-

gen verloren gehen koumlnnen

Die in diesem Skript angegebenen Namen erleichtern eine schnelle und

eindeutige Orientierung und das spaumltere Auffinden von aumllteren Pro-

grammen

145 Das Codefenster

EreignisDer Ablauf eines Windows-Programms wird im Wesentlichen durch das

Ausloumlsen von Ereignissen durch den Benutzer gesteuert Er loumlst z B die

Anzeige des Texts Hallo aus indem er auf den Button Hallo klickt Der

Entwickler muss dafuumlr sorgen dass aufgrund dieses Ereignisses auch tat-

saumlchlich der gewuumlnschte 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

EreignismethodeZum Schreiben einer Ereignismethode fuumlhren Sie am besten einen Dop-

pelklick auf dem betreffenden Steuerelement aus Daraufhin erscheint das

Codefenster Zwischen der Formularansicht und der Codeansicht koumlnnen

Sie anschlieszligend uumlber die Menuumlpunkte Ansicht bull Code bzw Ansicht bull

Designer hin- und herschalten Das ist auch uumlber die Registerkarten ober-

halb des Formulars bzw des Codefensters moumlglich (siehe Abbildung 111)

4493book Seite 23 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

24

Abbildung 111 Registerkarten

Nach erfolgtem Doppelklick auf den Button Hallo erscheinen im Code-

fenster die folgenden Eintraumlge

using Systemusing SystemWindowsForms

namespace MeinErstes

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdHallo_Click(object sender EventArgs e)

Listing 11 Projekt raquoMeinErsteslaquo Button raquoHallolaquo ohne Code

Zur Erlaumluterung

Grundsaumltzlich gilt dass Sie sich nicht von der Vielzahl der automatisch

erzeugten Zeilen und den noch unbekannten Inhalten abschrecken las-

sen sollten

Zunaumlchst das Wichtigste Innerhalb der geschweiften Klammern der

Ereignismethode CmdHallo_Click() wird spaumlter Ihr eigener Programm-

code hinzugefuumlgt

4493book Seite 24 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

25

1Zu den anderen Bestandteilen (die erst spaumlter fuumlr das eigene Programmie-

ren wichtig werden)

Namensraum C ist eine objektorientierte Sprache Ein wichtiges Element objektori-

entierter Sprachen sind die so genannten Klassen Klassen eroumlffnen wei-

tere Programmiermoumlglichkeiten Namensraumlume wiederum beinhalten

zusammengehoumlrige Klassen

using In obigem Listing koumlnnen Sie erkennen dass einige Programmzeilen

die mit using beginnen bereits entfernt wurden Das Schluumlsselwort

using dient zum Einbinden von Namensraumlumen in das aktuelle Projekt

Da wir die Klassen in diesen Namensraumlumen nicht benoumltigen wurden

die betreffenden Zeilen entfernt

Seit der Version 2015 von Visual Studio werden solche uumlberfluumlssigen Ele-

mente in grauer Schriftfarbe dargestellt Falls sich der Cursor in einer der

betreffenden Zeilen befindet erscheint links von der Zeile eine gelbe

Gluumlhbirne Platzieren Sie den Mauszeiger uumlber dieser Gluumlhbirne koumlnnen

Sie sich Hinweise dazu anzeigen lassen wie die uumlberfluumlssigen Elemente

ganz entfernt werden koumlnnen

namespace Oberhalb von public partial class und von private void erschei-

nen auszligerdem seit Visual Studio 2015 automatisch weitere Informatio-

nen zur Klasse Form1 und ihren Elementen in kleiner grauer Schrift wie

zum Beispiel 0 references oder 3 references Auch diese koumlnnen wir zu-

naumlchst noch ignorieren

Dieses erste Projekt verfuumlgt uumlber einen eigenen Namensraum (engl

namespace) daher namespace MeinErstes

public partial class Alle Elemente des aktuellen Formulars Form1 stehen innerhalb der

oumlffentlich zugaumlnglichen Klasse Form1 daher public class Form1 Ein Teil

der Elemente steht in dieser Datei ein anderer Teil der ebenfalls auto-

matisch erzeugt wurde steht in einer anderen hier nicht sichtbaren

Datei daher der Zusatz partial (dt teilweise)

Die Methode InitializeComponent() beinhaltet Programmzeilen die das

Aussehen und Verhalten der Steuerelemente des Programms bestim-

men

private void Der Zusatz private bedeutet dass die Ereignismethode CmdHalloClick()

nur in dieser Klasse bekannt ist Mit void wird gekennzeichnet dass die-

se Methode lediglich etwas ausfuumlhrt aber kein Ergebnis zuruumlckliefert

4493book Seite 25 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

26

Auf weitere Einzelheiten dieser automatisch erzeugten Bestandteile

wird zu einem spaumlteren Zeitpunkt eingegangen da es hier noch nicht

notwendig ist und eher verwirren wuumlrde

Der anfaumlnglich ausgefuumlhrte Doppelklick fuumlhrt immer zu dem Ereignis das

am haumlufigsten mit dem betreffenden Steuerelement verbunden wird

Click Das ist beim Button natuumlrlich das Ereignis Click Zu einem Steuerelement

gibt es aber auch noch andere moumlgliche Ereignisse

Bei den nachfolgenden Programmen werden nicht mehr alle Teile des Pro-

grammcodes im Buch abgebildet sondern nur noch

die Teile die vom Entwickler per Codeeingabe erzeugt werden

und die Teile des automatisch erzeugten Codes die wichtig fuumlr das allge-

meine Verstaumlndnis sind

Den vollstaumlndigen Programmcode koumlnnen Sie aber jederzeit betrachten

wenn Sie die Beispielprojekte laden bzw ausprobieren

146 Schreiben von Programmcode

In der Methode CmdHallo_Click() soll eine Befehlszeile eingefuumlgt werden

sodass sie anschlieszligend wie folgt aussieht

private void CmdHallo_Click(object sender EventArgs e)

LblAnzeigeText = Hallo

Listing 12 Projekt raquoMeinErsteslaquo Button raquoHallolaquo mit Code

Der Text muss in Anfuumlhrungszeichen gesetzt werden da C sonst an-

nimmt dass es sich um eine Variable mit dem Namen Hallo handelt

Anweisung Der Inhalt einer Methode setzt sich aus einzelnen Anweisungen zusam-

men die nacheinander ausgefuumlhrt werden Die vorliegende Methode ent-

haumllt nur eine Anweisung in ihr wird mithilfe des Gleichheitszeichens eine

Zuweisung durchgefuumlhrt

Zuweisung Bei einer Zuweisung wird der Ausdruck rechts vom Gleichheitszeichen

ausgewertet und der Variablen der Objekteigenschaft oder der Steuerele-

menteigenschaft links vom Gleichheitszeichen zugewiesen Die Zeichen-

4493book Seite 26 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

27

1kette Hallo wird der Eigenschaft Text des Steuerelements LblAnzeige mit-

tels folgender Schreibweise SteuerelementEigenschaft = Wert zugewiesen

Das fuumlhrt zur Anzeige des Werts

Nach dem Wechsel auf die Formularansicht koumlnnen Sie das naumlchste Steuer-

element auswaumlhlen fuumlr das eine Ereignismethode geschrieben werden soll

Code editierenInnerhalb des Codefensters kann Text mit den gaumlngigen Methoden der

Textverarbeitung editiert kopiert verschoben und geloumlscht werden

In der Ereignismethode CmdEnde_Click() soll der folgende Code stehen

private void CmdEnde_Click(object sender EventArgs e)

Close()

Listing 13 Projekt raquoMeinErsteslaquo Button raquoEndelaquo

Close()Die Methode Close() dient dem Schlieszligen eines Formulars Da es sich um

das einzige Formular dieses Projekts handelt wird dadurch das Programm

beendet und die gesamte Windows-Anwendung geschlossen

Dies waren einige Beispiele zur Aumlnderung der Eigenschaften eines Steuer-

elements zur Laufzeit des Programms durch Programmcode Sie erinnern

sich Zu Beginn hatten wir bereits die Starteigenschaften der Steuerele-

mente im Eigenschaften-Fenster eingestellt

147 Kommentare

Bei laumlngeren Programmen mit vielen Anweisungen gehoumlrt es zum guten

Programmierstil Kommentarzeilen zu schreiben In diesen Zeilen werden

einzelne Anweisungen oder auch laumlngere Bloumlcke von Anweisungen er-

laumlutert damit Sie selbst oder auch ein anderer Programmierer sie spaumlter

leichter nachvollziehen koumlnnen Alle Zeichen innerhalb eines Kommen-

tars werden nicht uumlbersetzt oder ausgefuumlhrt

Kommentar Ein Kommentar beginnt mit der Zeichenkombination endet mit der Zei-

chenkombination und kann sich uumlber mehrere Zeilen erstrecken

KommentarEine andere Moumlglichkeit ergibt sich durch die Zeichenkombination Ein

solcher Kommentar erstreckt sich nur bis zum Ende der Zeile

4493book Seite 27 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

28

Der folgende Programmcode wird um einen Kommentar ergaumlnzt

private void CmdEnde_Click(object sender EventArgs e)

Diese Anweisung beendetdas Programm

Close()

Listing 14 Projekt raquoMeinErsteslaquo Button raquoEndelaquo mit Kommentar

Code aus-

kommentieren

Hier noch ein kleiner Trick Sollen bestimmte Programmzeilen fuumlr einen

Test des Programms kurzfristig nicht ausgefuumlhrt werden koumlnnen Sie sie

auskommentieren indem Sie die Zeichenkombination vor die betreffen-

den Zeilen setzen Das geht sehr schnell indem Sie die betreffende(n)

Zeile(n) markieren und anschlieszligend das entsprechende Symbol in der

Symbolleiste anklicken siehe Abbildung 112 Rechts daneben befindet sich

das Symbol welches die Auskommentierung nach dem Test wieder ruumlck-

gaumlngig macht

Abbildung 112 Kommentar einaus

148 Starten Ausfuumlhren und Beenden des Programms

Programm starten Nach dem Einfuumlgen der Steuerelemente und dem Erstellen der Ereignis-

methoden ist das Programm fertig und kann gestartet werden Dazu

betaumltigen Sie den Start-Button in der Symbolleiste (dreieckiger gruumlner

Pfeil nach rechts) Alternativ starten Sie das Programm uumlber die Funk-

tionstaste (F5) oder den Menuumlpunkt Debuggen bull Debugging Starten

Das Formular erscheint und das Betaumltigen der Buttons fuumlhrt zum pro-

grammierten Ergebnis

Programm beenden Zur regulaumlren Beendigung eines Programms ist der Button mit der Auf-

schrift Ende vorgesehen Moumlchten Sie ein Programm waumlhrend des Verlaufs

vorzeitig abbrechen koumlnnen Sie auch den Ende-Button in der Symbolleiste

(rotes Quadrat) betaumltigen

4493book Seite 28 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

29

1FehlerTritt waumlhrend der Ausfuumlhrung eines Programms ein Fehler auf werden Sie

hierauf hingewiesen und das Codefenster zeigt die entsprechende Ereig-

nismethode sowie die fehlerhafte Zeile an In diesem Fall beenden Sie das

Programm korrigieren den Code und starten das Programm wieder

Programm testenEs ist empfehlenswert das Programm bereits waumlhrend der Entwicklung

mehrmals durch einen Aufruf zu testen und nicht erst wenn das Pro-

gramm vollstaumlndig erstellt worden ist Ein geeigneter Zeitpunkt dazu er-

gibt sich zum Beispiel

nach dem Einfuumlgen der Steuerelemente und dem Zuweisen der Eigen-

schaften die Sie zu Programmbeginn benoumltigen oder

nach dem Erstellen jeder Ereignismethode

149 Ausfuumlhrbares Programm

exe-DateiNach erfolgreichem Test des Programms koumlnnen Sie die ausfuumlhrbare Datei

(exe-Datei) auch auszligerhalb der Entwicklungsumgebung aufrufen Haben

Sie an den Grundeinstellungen nichts veraumlndert und die vorgeschlage-

nen Namen verwendet findet sich die zugehoumlrige exe-Datei des aktuellen

Projekts im Verzeichnis DokumenteVisual Studio 2017ProjectsMeinErs-

tesMeinErstesbinDebug Das Programm kann also ganz normal im Win-

dows-Explorer direkt uumlber Doppelklick gestartet werden

Die Weitergabe eines eigenen Windows-Programms auf einen anderen PC

ist etwas aufwendiger Dieser Vorgang wird im Anhang beschrieben

1410 Schlieszligen und Oumlffnen eines Projekts

Projekt schlieszligenUm ein Projekt zu schlieszligen waumlhlen Sie den Menuumlpunkt Datei bull Projekt-

mappe schliessen Falls Sie Veraumlnderungen vorgenommen haben wer-

den Sie vorher gefragt ob Sie diese Aumlnderungen speichern moumlchten

Wollen Sie die Projektdaten sicherheitshalber zwischendurch speichern ist

das uumlber den Menuumlpunkt Datei bull Alles speichern moumlglich Das ist bei

laumlngeren Entwicklungsphasen sehr zu empfehlen

Projekt oumlffnenZum Oumlffnen eines vorhandenen Projekts waumlhlen Sie den Menuumlpunkt

Datei bull oumlffnen bull Projekt Im darauffolgenden Dialogfeld Projekt oumlff-

nen waumlhlen Sie zunaumlchst das gewuumlnschte Projektverzeichnis aus und an-

schlieszligend die gleichnamige Datei mit der Endung sln

4493book Seite 29 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

30

Alle Beispielprojekte finden Sie auf wwwrheinwerk-verlagde4351 unter

raquoMaterialien zum Buchlaquo zum Download Sollte eines der Projekte einmal

nicht gestartet werden koumlnnen sollten Sie es uumlber den Menuumlpunkt Erstel-

len bull Projektmappe neu erstellen neu erstellen

1411 Uumlbung

Uumlbung UName Erzeugen Sie ein Windows-Programm mit einem Formular das zwei But-

tons und ein Label beinhaltet (siehe Abbildung 113) Bei Betaumltigung des

ersten Buttons erscheint im Label Ihr Name Bei Betaumltigung des zweiten

Buttons wird das Programm beendet Namensvorschlaumlge Projektname

UName Buttons CmdMeinName und CmdEnde Label LblMeinName

Abbildung 113 Uumlbung UName

1412 Empfehlungen fuumlr Zeilenumbruumlche

Zeilenumbruch Zeilenumbruumlche erhoumlhen die Lesbarkeit des Programmcodes Sie koumlnnen

jedoch nicht an jeder Stelle innerhalb einer Anweisung durchgefuumlhrt wer-

den Nachfolgend werden einige Stellen empfohlen

nach einer oumlffnenden Klammer (wie bereits gezeigt)

vor einer schlieszligenden Klammer

nach einem Komma

nach einem Operator und

nach einem Punkt hinter einem Objektnamen

Falls Sie einen Zeilenumbruch innerhalb einer Zeichenkette durchfuumlhren

werden seit Visual Studio 2017 zur Fehlervermeidung beide Teile der Zei-

chenkette automatisch durch Anfuumlhrungszeichen begrenzt und durch den

Verkettungsoperator + (siehe Abschnitt 224) miteinander verbunden

4493book Seite 30 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

31

115 Arbeiten mit Steuerelementen

151 Steuerelemente formatieren

HilfslinienZur besseren Anordnung der Steuerelemente auf dem Formular koumlnnen

Sie sie mithilfe der Maus nach Augenmaszlig verschieben Dabei erscheinen

automatisch Hilfslinien falls das aktuelle Element horizontal oder vertikal

parallel zu einem anderen Element steht

Mehrere Steuerele-

mente markieren

Weitere Moumlglichkeiten bieten die Menuumlpunkte im Menuuml Format In vie-

len Faumlllen muumlssen vorher mehrere Steuerelemente auf einmal markiert

werden (siehe Abbildung 114)

Abbildung 114 Mehrere markierte Elemente

Das geschieht entweder

durch Umrahmung der Elemente mit einem Rechteck nachdem Sie zu-

vor das Steuerelement Zeiger ausgewaumlhlt haben oder

durch Mehrfachauswahl indem Sie ab dem zweiten auszuwaumlhlenden

Steuerelement die (ordf)-Taste (wie fuumlr Groszligbuchstaben) oder die (Strg)-

Taste gedruumlckt halten

Menuuml raquoFormatlaquoUumlber das Menuuml Format haben Sie anschlieszligend folgende Moumlglichkeiten

zur Anpassung der Steuerelemente

Die ausgewaumlhlten Steuerelemente koumlnnen horizontal oder vertikal zu-

einander ausgerichtet werden (Menuuml Format bull Ausrichten)

Auch die horizontalen undoder vertikalen Dimensionen der ausge-

waumlhlten Steuerelemente koumlnnen angeglichen werden (Menuuml Format bull

Groumlsse angleichen)

4493book Seite 31 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

32

Einheitliche

Abstaumlnde

Zudem koumlnnen die horizontalen und vertikalen Abstaumlnde zwischen den

ausgewaumlhlten Steuerelementen angeglichen vergroumlszligert verkleinert

oder entfernt werden (Menuuml Format bull Horizontaler AbstandVer-

tikaler Abstand)

Die Steuerelemente koumlnnen auszligerdem horizontal oder vertikal inner-

halb des Formulars zentriert werden (Menuuml Format bull auf Formular

zentrieren)

Sollten sich die Steuerelemente teilweise uumlberlappen koumlnnen Sie einzel-

ne Steuerelemente in den Vorder- bzw Hintergrund schieben (Menuuml

Format bull Reihenfolge)

Sie koumlnnen alle Steuerelemente gleichzeitig gegen versehentliches Ver-

schieben absichern (Menuuml Format bull Steuerelemente Sperren) Diese

Sperrung gilt nur waumlhrend der Entwicklung des Programms

Abbildung 115 zeigt ein Formular mit drei Buttons die alle linksbuumlndig aus-

gerichtet sind und den gleichen vertikalen Abstand voneinander haben

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 markieren Sie darin

mehrere Steuerelemente und testen Sie anschlieszligend die einzelnen Moumlg-

lichkeiten des Format-Menuumls aus

Abbildung 115 Nach der Formatierung

152 Steuerelemente kopieren

Steuerelemente

kopieren

Zur schnelleren Erzeugung eines Projekts koumlnnen vorhandene Steuerele-

mente einschlieszliglich aller ihrer Eigenschaften kopiert werden Markieren

Sie hierzu die gewuumlnschten Steuerelemente und kopieren Sie sie entweder

4493book Seite 32 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

33

1 uumlber das Menuuml Bearbeiten bull Kopieren und das Menuuml Bearbeiten bull

Einfuumlgen oder

mit den Tastenkombinationen (Strg) + (C) und (Strg) + (V)

Anschlieszligend sollten Sie die neu erzeugten Steuerelemente direkt umbe-

nennen und an den gewuumlnschten Positionen anordnen

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 und kopieren Sie einzel-

ne Steuerelemente Kontrollieren Sie anschlieszligend die Liste der vorhan-

denen Steuerelemente im Eigenschaften-Fenster auf eine einheitliche

Namensgebung

153 Eigenschaften zur Laufzeit aumlndern

Size LocationSteuerelemente haben die Eigenschaften Size (mit den Komponenten

Width und Height) und Location (mit den Komponenten X und Y) zur Anga-

be von Groumlszlige und Position X und Y geben die Koordinaten der oberen lin-

ken Ecke des Steuerelements an gemessen von der oberen linken Ecke des

umgebenden Elements (meist das Formular) Saumlmtliche Werte werden in

Pixeln angegeben

Alle diese Eigenschaften koumlnnen sowohl waumlhrend der Entwicklungszeit als

auch waumlhrend der Laufzeit eines Projekts veraumlndert werden Zur Aumlnderung

waumlhrend der Entwicklungszeit koumlnnen Sie die Eigenschaftswerte wie ge-

wohnt im Eigenschaften-Fenster eingeben Als Beispiel fuumlr Aumlnderungen

waumlhrend der Laufzeit soll hingegen das folgende Programm (Projekt

Steuerelemente) dienen (siehe Abbildung 116)

Abbildung 116 Position und Groumlszlige bestimmen

4493book Seite 33 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

34

Zunaumlchst ein Hinweis zu den benoumltigten Namensraumlumen die oberhalb der

Klasse eingebunden werden

using Systemusing SystemDrawingusing SystemWindowsForms

Listing 15 Projekt raquoSteuerelementelaquo Namensraumlume

Gegenuumlber dem vorherigen Projekt ist noch der Namensraum SystemDra-

wing hinzugekommen der beim Zugriff auf Positions- Groumlszligen- oder Farb-

angaben benoumltigt wird Die drei genannten Namensraumlume reichen bei vie-

len Projekten aus

Es wird nachfolgend generell nur der Teil des Programmcodes angezeigt

der veraumlndert wurde

private void CmdPositionRel_Click()

CmdTestLocation = new Point(CmdTestLocationX + 20 CmdTestLocationY)

private void CmdPositionAbs_Click()

CmdTestLocation = new Point(100 200)private void CmdGroesseRel_Click()

CmdTestSize = new Size(CmdTestSizeWidth + 20 CmdTestSizeHeight)

private void CmdGroesseAbs_Click()

CmdTestSize = new Size(50 100)

Listing 16 Projekt raquoSteuerelementelaquo

4493book Seite 34 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

35

1Zur Erlaumluterung

Verkuumlrzte

Darstellung

Der Kopfteil der einzelnen Methoden wird aus Gruumlnden der Uumlbersicht-

lichkeit jeweils in verkuumlrzter Form abgebildet Das wird bei den meisten

nachfolgenden Beispielen ebenfalls so sein auszliger wenn es genau auf die

Inhalte des Methodenkopfs ankommt

Das Formular enthaumllt fuumlnf Buttons Die oberen vier Buttons dienen der

Veraumlnderung von Position und Groumlszlige des fuumlnften Buttons

Die Position eines Elements kann relativ zur aktuellen Position oder auf

absolute Werte eingestellt werden Das Gleiche gilt fuumlr die Groumlszlige eines

Elements

Bei beiden Angaben handelt es sich um Wertepaare (XY bzw Breite

Houmlhe)

new Point 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 bereitzu-

stellen

X Y Bei Betaumltigung des Buttons Position Abs wird die Position des fuumlnften

Buttons auf die Werte X=100 und Y=200 gestellt jeweils gemessen von der

linken oberen Ecke des Formulars

Bei Betaumltigung des Buttons Position Rel wird die Position des fuumlnften

Buttons auf die Werte X = CmdTestLocationX + 20 und Y = CmdTestLoca-

tionY gestellt Bei X wird also der alte Wert der Komponente X um 20 er-

houmlht das Element bewegt sich nach rechts Bei Y wird der alte Wert der

Komponente Y nicht veraumlndert das Element bewegt sich somit nicht

nach oben oder unten

Size Zur Einstellung der Groumlszlige dient die Struktur Size

Width Height Bei Betaumltigung des Buttons Groumlsse Abs wird die Groumlszlige des fuumlnften But-

tons auf die Werte Width = 50 und Height = 100 gestellt

Bei Betaumltigung des Buttons Groumlsse Rel wird die Groumlszlige des fuumlnften

Buttons auf die Werte Width = CmdTestSizeWidth + 20 und Height = Cmd-

TestSizeHeight gestellt Bei Width wird also der alte Wert der Kompo-

nente Width um 20 erhoumlht das Element wird breiter Bei Height wird der

fruumlhere Wert der Komponente Height nicht veraumlndert das Element ver-

aumlndert seine Houmlhe daher nicht

Nach einigen Klicks sieht das Formular aus wie das in Abbildung 117

4493book Seite 35 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

36

Abbildung 117 Veraumlnderung von Eigenschaften zur Laufzeit

154 Vergabe und Verwendung von Namen

Beachten Sie in allen Programmen dass jedes Steuerelement seinen eige-

nen eindeutigen Namen hat und immer mit diesem Namen angesprochen

werden muss Besonders am Anfang passiert es erfahrungsgemaumlszlig haumlufig

dass ein Programm nur deshalb nicht zum gewuumlnschten Erfolg fuumlhrt weil

ein nicht vorhandener Name verwendet wird In diesem Zusammenhang

moumlchte ich noch einmal auf die Namenskonventionen hinweisen

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 uumlber Typ und Funktion

des Steuerelements Falls Sie beim Schreiben von Programmcode anschlie-

szligend diese Namen z B vollstaumlndig in Kleinbuchstaben eingeben werden

Sie nach Verlassen der Zeile darauf aufmerksam gemacht Sie koumlnnen so

schnell erkennen ob Sie tatsaumlchlich ein vorhandenes Steuerelement ver-

wendet haben

155 Verknuumlpfung von Texten mehrzeilige Texte

+ zur Verkettung Mithilfe des Zeichens + koumlnnen mehrere Texte miteinander verknuumlpft wer-

den Falls ein einzelner Zahlenwert zwischen den Texten steht wird er vor-

her in einen Text umgewandelt Aufgepasst Falls mehrere Zahlenwerte

direkt nacheinander mithilfe des Zeichens + verknuumlpft werden werden sie

zunaumlchst mathematisch addiert

4493book Seite 36 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

37

1nFalls Sie eine mehrzeilige Ausgabe wuumlnschen koumlnnen Sie einen Zeilenvor-

schub mithilfe der Zeichenfolge n (fuumlr new line) erzeugen

Nachfolgend wird das Formular des Projekts Steuerelemente vergroumlszligert

zum Beispiel auf 500 times 400 Anschlieszligend wird es um ein Label ergaumlnzt in

dem die aktuelle Position und Groumlszlige des Buttons angezeigt werden Das

soll nach Betaumltigung des Buttons Anzeige geschehen

private void CmdAnzeige_Click()

LblAnzeigeText = Position X + CmdTestLocationX + Y + CmdTestLocationY + n + Groumlszlige Breite +CmdTestSizeWidth + Houmlhe + CmdTestSizeHeight

Listing 17 Projekt raquoSteuerelementelaquo mit Anzeige

Nach einigen Klicks und der Betaumltigung des Buttons Anzeige sieht das For-

mular aus wie das in Abbildung 118

Abbildung 118 Anzeige der Eigenschaften

156 Eigenschaft BackColor Farben allgemein

BackColorDie Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-

Color festgelegt Dabei koumlnnen Sie die Farbe zur Entwicklungszeit leicht

mithilfe einer Farbpalette oder aus Systemfarben auswaumlhlen

ColorHintergrundfarben und andere Farben koumlnnen Sie auch zur Laufzeit ein-

stellen Dabei bedienen Sie sich der Farbwerte die Sie uumlber die Struktur Co-

lor auswaumlhlen

Ein Beispiel ebenfalls im Projekt Steuerelemente

4493book Seite 37 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

38

private void CmdFarbe_Click()

BackColor = ColorYellowLblAnzeigeBackColor = ColorFromArgb(192 255 0)

Listing 18 Projekt raquoSteuerelementelaquo mit Farben

Zur Erlaumluterung

Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften z B

Yellow Der Wert kann der Eigenschaft BackColor des Steuerelements zu-

gewiesen werden hier aber handelt es sich um das Formular selbst

FromArgb() Auszligerdem bietet die Struktur die Methode FromArgb() Diese koumlnnen Sie

auf verschiedene Arten aufrufen Eine dieser Arten erwartet genau drei

Parameter naumlmlich die Werte fuumlr Rot Gruumln und Blau jeweils zwischen 0

und 255

Das Formular sieht nach der Aumlnderung der Eigenschaft Farbe aus wie das in

Abbildung 119

Abbildung 119 Nach Aumlnderung der Eigenschaft raquoFarbelaquo

4493book Seite 38 Mittwoch 8 Maumlrz 2017 112 13

39

2

Kapitel 2

Grundlagen

In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-

lagen von C in Verbindung mit den gaumlngigen Steuerelementen von

Windows-Programmen

In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

mierung wie Variablen Operatoren Verzweigungen und Schleifen gemein-

sam mit wohlbekannten haumlufig verwendeten Steuerelementen kennen

21 Variablen und Datentypen

Variablen dienen der voruumlbergehenden Speicherung von Daten die sich

waumlhrend der Laufzeit eines Programms aumlndern koumlnnen Eine Variable be-

sitzt einen eindeutigen Namen unter dem sie angesprochen werden kann

211 Namen Werte

NamensregelnFuumlr die Namen von Variablen gelten in C die folgenden Regeln

Sie beginnen mit einem Buchstaben

Sie koumlnnen nur aus Buchstaben Zahlen und einigen wenigen Sonderzei-

chen (wie z B dem Unterstrich _) bestehen

Sie duumlrfen Umlaute oder auch das scharfe szlig enthalten Allerdings kann

das zu Fehlern im Einsatz unter anderssprachigen Umgebungen fuumlhren

Daher rate ich davon ab

Innerhalb eines Guumlltigkeitsbereichs darf es keine zwei Variablen mit

dem gleichen Namen geben (siehe Abschnitt 214)

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

4493book Seite 39 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

1 Einfuumlhrung

22

Startzustand Hiermit legen Sie den Startzustand fest also die Eigenschaften welche die

Steuerelemente zu Beginn des Programms bzw eventuell waumlhrend des ge-

samten Programms haben sollen Viele Eigenschaften koumlnnen Sie auch

noch waumlhrend der Laufzeit des Programms durch den Programmcode ver-

aumlndern

Bei einem Label ergibt die Einstellung der Eigenschaft BorderStyle auf

FixedSingle einen Rahmen Zur Aumlnderung auf FixedSingle klappen Sie die

Liste bei der Eigenschaft auf und waumlhlen den betreffenden Eintrag aus sie-

he Abbildung 110 Zur Aumlnderung einiger Eigenschaften muumlssen Sie gegebe-

nenfalls ein Dialogfeld aufrufen

Abbildung 110 Label nach der Aumlnderung von Name und BorderStyle

Typ Eigenschaft Einstellung

Formular Text Mein erstes Programm

Button Name CmdHallo

Text Hallo

Button Name CmdEnde

Text Ende

Label Name LblAnzeige

Text (leer)

BorderStyle FixedSingle

Tabelle 11 Steuerelemente mit Eigenschaften

4493book Seite 22 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

23

1Im Label soll zunaumlchst der Text (leer) erscheinen Hierzu waumlhlen Sie den

vorhandenen Text durch Anklicken aus und aumlndern ihn

Liste der

Steuerelemente

Sie finden alle in diesem Formular vorhandenen Steuerelemente in der Lis-

te die sich am oberen Ende des Eigenschaften-Fensters oumlffnen laumlsst

Dabei zeigt sich ein Vorteil der einheitlichen Namensvergabe Die Steuer-

elemente des gleichen Typs stehen immer direkt untereinander

144 Speichern eines Projekts

Alles speichernDie Daten eines C-Projekts werden innerhalb von Visual Studio in ver-

schiedenen Dateien gespeichert Zum Speichern des gesamten Projekts

verwenden Sie den Menuumlpunkt Datei bull Alles Speichern Diesen Vorgang

sollten Sie in regelmaumlszligigen Abstaumlnden durchfuumlhren damit keine Aumlnderun-

gen verloren gehen koumlnnen

Die in diesem Skript angegebenen Namen erleichtern eine schnelle und

eindeutige Orientierung und das spaumltere Auffinden von aumllteren Pro-

grammen

145 Das Codefenster

EreignisDer Ablauf eines Windows-Programms wird im Wesentlichen durch das

Ausloumlsen von Ereignissen durch den Benutzer gesteuert Er loumlst z B die

Anzeige des Texts Hallo aus indem er auf den Button Hallo klickt Der

Entwickler muss dafuumlr sorgen dass aufgrund dieses Ereignisses auch tat-

saumlchlich der gewuumlnschte 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

EreignismethodeZum Schreiben einer Ereignismethode fuumlhren Sie am besten einen Dop-

pelklick auf dem betreffenden Steuerelement aus Daraufhin erscheint das

Codefenster Zwischen der Formularansicht und der Codeansicht koumlnnen

Sie anschlieszligend uumlber die Menuumlpunkte Ansicht bull Code bzw Ansicht bull

Designer hin- und herschalten Das ist auch uumlber die Registerkarten ober-

halb des Formulars bzw des Codefensters moumlglich (siehe Abbildung 111)

4493book Seite 23 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

24

Abbildung 111 Registerkarten

Nach erfolgtem Doppelklick auf den Button Hallo erscheinen im Code-

fenster die folgenden Eintraumlge

using Systemusing SystemWindowsForms

namespace MeinErstes

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdHallo_Click(object sender EventArgs e)

Listing 11 Projekt raquoMeinErsteslaquo Button raquoHallolaquo ohne Code

Zur Erlaumluterung

Grundsaumltzlich gilt dass Sie sich nicht von der Vielzahl der automatisch

erzeugten Zeilen und den noch unbekannten Inhalten abschrecken las-

sen sollten

Zunaumlchst das Wichtigste Innerhalb der geschweiften Klammern der

Ereignismethode CmdHallo_Click() wird spaumlter Ihr eigener Programm-

code hinzugefuumlgt

4493book Seite 24 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

25

1Zu den anderen Bestandteilen (die erst spaumlter fuumlr das eigene Programmie-

ren wichtig werden)

Namensraum C ist eine objektorientierte Sprache Ein wichtiges Element objektori-

entierter Sprachen sind die so genannten Klassen Klassen eroumlffnen wei-

tere Programmiermoumlglichkeiten Namensraumlume wiederum beinhalten

zusammengehoumlrige Klassen

using In obigem Listing koumlnnen Sie erkennen dass einige Programmzeilen

die mit using beginnen bereits entfernt wurden Das Schluumlsselwort

using dient zum Einbinden von Namensraumlumen in das aktuelle Projekt

Da wir die Klassen in diesen Namensraumlumen nicht benoumltigen wurden

die betreffenden Zeilen entfernt

Seit der Version 2015 von Visual Studio werden solche uumlberfluumlssigen Ele-

mente in grauer Schriftfarbe dargestellt Falls sich der Cursor in einer der

betreffenden Zeilen befindet erscheint links von der Zeile eine gelbe

Gluumlhbirne Platzieren Sie den Mauszeiger uumlber dieser Gluumlhbirne koumlnnen

Sie sich Hinweise dazu anzeigen lassen wie die uumlberfluumlssigen Elemente

ganz entfernt werden koumlnnen

namespace Oberhalb von public partial class und von private void erschei-

nen auszligerdem seit Visual Studio 2015 automatisch weitere Informatio-

nen zur Klasse Form1 und ihren Elementen in kleiner grauer Schrift wie

zum Beispiel 0 references oder 3 references Auch diese koumlnnen wir zu-

naumlchst noch ignorieren

Dieses erste Projekt verfuumlgt uumlber einen eigenen Namensraum (engl

namespace) daher namespace MeinErstes

public partial class Alle Elemente des aktuellen Formulars Form1 stehen innerhalb der

oumlffentlich zugaumlnglichen Klasse Form1 daher public class Form1 Ein Teil

der Elemente steht in dieser Datei ein anderer Teil der ebenfalls auto-

matisch erzeugt wurde steht in einer anderen hier nicht sichtbaren

Datei daher der Zusatz partial (dt teilweise)

Die Methode InitializeComponent() beinhaltet Programmzeilen die das

Aussehen und Verhalten der Steuerelemente des Programms bestim-

men

private void Der Zusatz private bedeutet dass die Ereignismethode CmdHalloClick()

nur in dieser Klasse bekannt ist Mit void wird gekennzeichnet dass die-

se Methode lediglich etwas ausfuumlhrt aber kein Ergebnis zuruumlckliefert

4493book Seite 25 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

26

Auf weitere Einzelheiten dieser automatisch erzeugten Bestandteile

wird zu einem spaumlteren Zeitpunkt eingegangen da es hier noch nicht

notwendig ist und eher verwirren wuumlrde

Der anfaumlnglich ausgefuumlhrte Doppelklick fuumlhrt immer zu dem Ereignis das

am haumlufigsten mit dem betreffenden Steuerelement verbunden wird

Click Das ist beim Button natuumlrlich das Ereignis Click Zu einem Steuerelement

gibt es aber auch noch andere moumlgliche Ereignisse

Bei den nachfolgenden Programmen werden nicht mehr alle Teile des Pro-

grammcodes im Buch abgebildet sondern nur noch

die Teile die vom Entwickler per Codeeingabe erzeugt werden

und die Teile des automatisch erzeugten Codes die wichtig fuumlr das allge-

meine Verstaumlndnis sind

Den vollstaumlndigen Programmcode koumlnnen Sie aber jederzeit betrachten

wenn Sie die Beispielprojekte laden bzw ausprobieren

146 Schreiben von Programmcode

In der Methode CmdHallo_Click() soll eine Befehlszeile eingefuumlgt werden

sodass sie anschlieszligend wie folgt aussieht

private void CmdHallo_Click(object sender EventArgs e)

LblAnzeigeText = Hallo

Listing 12 Projekt raquoMeinErsteslaquo Button raquoHallolaquo mit Code

Der Text muss in Anfuumlhrungszeichen gesetzt werden da C sonst an-

nimmt dass es sich um eine Variable mit dem Namen Hallo handelt

Anweisung Der Inhalt einer Methode setzt sich aus einzelnen Anweisungen zusam-

men die nacheinander ausgefuumlhrt werden Die vorliegende Methode ent-

haumllt nur eine Anweisung in ihr wird mithilfe des Gleichheitszeichens eine

Zuweisung durchgefuumlhrt

Zuweisung Bei einer Zuweisung wird der Ausdruck rechts vom Gleichheitszeichen

ausgewertet und der Variablen der Objekteigenschaft oder der Steuerele-

menteigenschaft links vom Gleichheitszeichen zugewiesen Die Zeichen-

4493book Seite 26 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

27

1kette Hallo wird der Eigenschaft Text des Steuerelements LblAnzeige mit-

tels folgender Schreibweise SteuerelementEigenschaft = Wert zugewiesen

Das fuumlhrt zur Anzeige des Werts

Nach dem Wechsel auf die Formularansicht koumlnnen Sie das naumlchste Steuer-

element auswaumlhlen fuumlr das eine Ereignismethode geschrieben werden soll

Code editierenInnerhalb des Codefensters kann Text mit den gaumlngigen Methoden der

Textverarbeitung editiert kopiert verschoben und geloumlscht werden

In der Ereignismethode CmdEnde_Click() soll der folgende Code stehen

private void CmdEnde_Click(object sender EventArgs e)

Close()

Listing 13 Projekt raquoMeinErsteslaquo Button raquoEndelaquo

Close()Die Methode Close() dient dem Schlieszligen eines Formulars Da es sich um

das einzige Formular dieses Projekts handelt wird dadurch das Programm

beendet und die gesamte Windows-Anwendung geschlossen

Dies waren einige Beispiele zur Aumlnderung der Eigenschaften eines Steuer-

elements zur Laufzeit des Programms durch Programmcode Sie erinnern

sich Zu Beginn hatten wir bereits die Starteigenschaften der Steuerele-

mente im Eigenschaften-Fenster eingestellt

147 Kommentare

Bei laumlngeren Programmen mit vielen Anweisungen gehoumlrt es zum guten

Programmierstil Kommentarzeilen zu schreiben In diesen Zeilen werden

einzelne Anweisungen oder auch laumlngere Bloumlcke von Anweisungen er-

laumlutert damit Sie selbst oder auch ein anderer Programmierer sie spaumlter

leichter nachvollziehen koumlnnen Alle Zeichen innerhalb eines Kommen-

tars werden nicht uumlbersetzt oder ausgefuumlhrt

Kommentar Ein Kommentar beginnt mit der Zeichenkombination endet mit der Zei-

chenkombination und kann sich uumlber mehrere Zeilen erstrecken

KommentarEine andere Moumlglichkeit ergibt sich durch die Zeichenkombination Ein

solcher Kommentar erstreckt sich nur bis zum Ende der Zeile

4493book Seite 27 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

28

Der folgende Programmcode wird um einen Kommentar ergaumlnzt

private void CmdEnde_Click(object sender EventArgs e)

Diese Anweisung beendetdas Programm

Close()

Listing 14 Projekt raquoMeinErsteslaquo Button raquoEndelaquo mit Kommentar

Code aus-

kommentieren

Hier noch ein kleiner Trick Sollen bestimmte Programmzeilen fuumlr einen

Test des Programms kurzfristig nicht ausgefuumlhrt werden koumlnnen Sie sie

auskommentieren indem Sie die Zeichenkombination vor die betreffen-

den Zeilen setzen Das geht sehr schnell indem Sie die betreffende(n)

Zeile(n) markieren und anschlieszligend das entsprechende Symbol in der

Symbolleiste anklicken siehe Abbildung 112 Rechts daneben befindet sich

das Symbol welches die Auskommentierung nach dem Test wieder ruumlck-

gaumlngig macht

Abbildung 112 Kommentar einaus

148 Starten Ausfuumlhren und Beenden des Programms

Programm starten Nach dem Einfuumlgen der Steuerelemente und dem Erstellen der Ereignis-

methoden ist das Programm fertig und kann gestartet werden Dazu

betaumltigen Sie den Start-Button in der Symbolleiste (dreieckiger gruumlner

Pfeil nach rechts) Alternativ starten Sie das Programm uumlber die Funk-

tionstaste (F5) oder den Menuumlpunkt Debuggen bull Debugging Starten

Das Formular erscheint und das Betaumltigen der Buttons fuumlhrt zum pro-

grammierten Ergebnis

Programm beenden Zur regulaumlren Beendigung eines Programms ist der Button mit der Auf-

schrift Ende vorgesehen Moumlchten Sie ein Programm waumlhrend des Verlaufs

vorzeitig abbrechen koumlnnen Sie auch den Ende-Button in der Symbolleiste

(rotes Quadrat) betaumltigen

4493book Seite 28 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

29

1FehlerTritt waumlhrend der Ausfuumlhrung eines Programms ein Fehler auf werden Sie

hierauf hingewiesen und das Codefenster zeigt die entsprechende Ereig-

nismethode sowie die fehlerhafte Zeile an In diesem Fall beenden Sie das

Programm korrigieren den Code und starten das Programm wieder

Programm testenEs ist empfehlenswert das Programm bereits waumlhrend der Entwicklung

mehrmals durch einen Aufruf zu testen und nicht erst wenn das Pro-

gramm vollstaumlndig erstellt worden ist Ein geeigneter Zeitpunkt dazu er-

gibt sich zum Beispiel

nach dem Einfuumlgen der Steuerelemente und dem Zuweisen der Eigen-

schaften die Sie zu Programmbeginn benoumltigen oder

nach dem Erstellen jeder Ereignismethode

149 Ausfuumlhrbares Programm

exe-DateiNach erfolgreichem Test des Programms koumlnnen Sie die ausfuumlhrbare Datei

(exe-Datei) auch auszligerhalb der Entwicklungsumgebung aufrufen Haben

Sie an den Grundeinstellungen nichts veraumlndert und die vorgeschlage-

nen Namen verwendet findet sich die zugehoumlrige exe-Datei des aktuellen

Projekts im Verzeichnis DokumenteVisual Studio 2017ProjectsMeinErs-

tesMeinErstesbinDebug Das Programm kann also ganz normal im Win-

dows-Explorer direkt uumlber Doppelklick gestartet werden

Die Weitergabe eines eigenen Windows-Programms auf einen anderen PC

ist etwas aufwendiger Dieser Vorgang wird im Anhang beschrieben

1410 Schlieszligen und Oumlffnen eines Projekts

Projekt schlieszligenUm ein Projekt zu schlieszligen waumlhlen Sie den Menuumlpunkt Datei bull Projekt-

mappe schliessen Falls Sie Veraumlnderungen vorgenommen haben wer-

den Sie vorher gefragt ob Sie diese Aumlnderungen speichern moumlchten

Wollen Sie die Projektdaten sicherheitshalber zwischendurch speichern ist

das uumlber den Menuumlpunkt Datei bull Alles speichern moumlglich Das ist bei

laumlngeren Entwicklungsphasen sehr zu empfehlen

Projekt oumlffnenZum Oumlffnen eines vorhandenen Projekts waumlhlen Sie den Menuumlpunkt

Datei bull oumlffnen bull Projekt Im darauffolgenden Dialogfeld Projekt oumlff-

nen waumlhlen Sie zunaumlchst das gewuumlnschte Projektverzeichnis aus und an-

schlieszligend die gleichnamige Datei mit der Endung sln

4493book Seite 29 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

30

Alle Beispielprojekte finden Sie auf wwwrheinwerk-verlagde4351 unter

raquoMaterialien zum Buchlaquo zum Download Sollte eines der Projekte einmal

nicht gestartet werden koumlnnen sollten Sie es uumlber den Menuumlpunkt Erstel-

len bull Projektmappe neu erstellen neu erstellen

1411 Uumlbung

Uumlbung UName Erzeugen Sie ein Windows-Programm mit einem Formular das zwei But-

tons und ein Label beinhaltet (siehe Abbildung 113) Bei Betaumltigung des

ersten Buttons erscheint im Label Ihr Name Bei Betaumltigung des zweiten

Buttons wird das Programm beendet Namensvorschlaumlge Projektname

UName Buttons CmdMeinName und CmdEnde Label LblMeinName

Abbildung 113 Uumlbung UName

1412 Empfehlungen fuumlr Zeilenumbruumlche

Zeilenumbruch Zeilenumbruumlche erhoumlhen die Lesbarkeit des Programmcodes Sie koumlnnen

jedoch nicht an jeder Stelle innerhalb einer Anweisung durchgefuumlhrt wer-

den Nachfolgend werden einige Stellen empfohlen

nach einer oumlffnenden Klammer (wie bereits gezeigt)

vor einer schlieszligenden Klammer

nach einem Komma

nach einem Operator und

nach einem Punkt hinter einem Objektnamen

Falls Sie einen Zeilenumbruch innerhalb einer Zeichenkette durchfuumlhren

werden seit Visual Studio 2017 zur Fehlervermeidung beide Teile der Zei-

chenkette automatisch durch Anfuumlhrungszeichen begrenzt und durch den

Verkettungsoperator + (siehe Abschnitt 224) miteinander verbunden

4493book Seite 30 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

31

115 Arbeiten mit Steuerelementen

151 Steuerelemente formatieren

HilfslinienZur besseren Anordnung der Steuerelemente auf dem Formular koumlnnen

Sie sie mithilfe der Maus nach Augenmaszlig verschieben Dabei erscheinen

automatisch Hilfslinien falls das aktuelle Element horizontal oder vertikal

parallel zu einem anderen Element steht

Mehrere Steuerele-

mente markieren

Weitere Moumlglichkeiten bieten die Menuumlpunkte im Menuuml Format In vie-

len Faumlllen muumlssen vorher mehrere Steuerelemente auf einmal markiert

werden (siehe Abbildung 114)

Abbildung 114 Mehrere markierte Elemente

Das geschieht entweder

durch Umrahmung der Elemente mit einem Rechteck nachdem Sie zu-

vor das Steuerelement Zeiger ausgewaumlhlt haben oder

durch Mehrfachauswahl indem Sie ab dem zweiten auszuwaumlhlenden

Steuerelement die (ordf)-Taste (wie fuumlr Groszligbuchstaben) oder die (Strg)-

Taste gedruumlckt halten

Menuuml raquoFormatlaquoUumlber das Menuuml Format haben Sie anschlieszligend folgende Moumlglichkeiten

zur Anpassung der Steuerelemente

Die ausgewaumlhlten Steuerelemente koumlnnen horizontal oder vertikal zu-

einander ausgerichtet werden (Menuuml Format bull Ausrichten)

Auch die horizontalen undoder vertikalen Dimensionen der ausge-

waumlhlten Steuerelemente koumlnnen angeglichen werden (Menuuml Format bull

Groumlsse angleichen)

4493book Seite 31 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

32

Einheitliche

Abstaumlnde

Zudem koumlnnen die horizontalen und vertikalen Abstaumlnde zwischen den

ausgewaumlhlten Steuerelementen angeglichen vergroumlszligert verkleinert

oder entfernt werden (Menuuml Format bull Horizontaler AbstandVer-

tikaler Abstand)

Die Steuerelemente koumlnnen auszligerdem horizontal oder vertikal inner-

halb des Formulars zentriert werden (Menuuml Format bull auf Formular

zentrieren)

Sollten sich die Steuerelemente teilweise uumlberlappen koumlnnen Sie einzel-

ne Steuerelemente in den Vorder- bzw Hintergrund schieben (Menuuml

Format bull Reihenfolge)

Sie koumlnnen alle Steuerelemente gleichzeitig gegen versehentliches Ver-

schieben absichern (Menuuml Format bull Steuerelemente Sperren) Diese

Sperrung gilt nur waumlhrend der Entwicklung des Programms

Abbildung 115 zeigt ein Formular mit drei Buttons die alle linksbuumlndig aus-

gerichtet sind und den gleichen vertikalen Abstand voneinander haben

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 markieren Sie darin

mehrere Steuerelemente und testen Sie anschlieszligend die einzelnen Moumlg-

lichkeiten des Format-Menuumls aus

Abbildung 115 Nach der Formatierung

152 Steuerelemente kopieren

Steuerelemente

kopieren

Zur schnelleren Erzeugung eines Projekts koumlnnen vorhandene Steuerele-

mente einschlieszliglich aller ihrer Eigenschaften kopiert werden Markieren

Sie hierzu die gewuumlnschten Steuerelemente und kopieren Sie sie entweder

4493book Seite 32 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

33

1 uumlber das Menuuml Bearbeiten bull Kopieren und das Menuuml Bearbeiten bull

Einfuumlgen oder

mit den Tastenkombinationen (Strg) + (C) und (Strg) + (V)

Anschlieszligend sollten Sie die neu erzeugten Steuerelemente direkt umbe-

nennen und an den gewuumlnschten Positionen anordnen

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 und kopieren Sie einzel-

ne Steuerelemente Kontrollieren Sie anschlieszligend die Liste der vorhan-

denen Steuerelemente im Eigenschaften-Fenster auf eine einheitliche

Namensgebung

153 Eigenschaften zur Laufzeit aumlndern

Size LocationSteuerelemente haben die Eigenschaften Size (mit den Komponenten

Width und Height) und Location (mit den Komponenten X und Y) zur Anga-

be von Groumlszlige und Position X und Y geben die Koordinaten der oberen lin-

ken Ecke des Steuerelements an gemessen von der oberen linken Ecke des

umgebenden Elements (meist das Formular) Saumlmtliche Werte werden in

Pixeln angegeben

Alle diese Eigenschaften koumlnnen sowohl waumlhrend der Entwicklungszeit als

auch waumlhrend der Laufzeit eines Projekts veraumlndert werden Zur Aumlnderung

waumlhrend der Entwicklungszeit koumlnnen Sie die Eigenschaftswerte wie ge-

wohnt im Eigenschaften-Fenster eingeben Als Beispiel fuumlr Aumlnderungen

waumlhrend der Laufzeit soll hingegen das folgende Programm (Projekt

Steuerelemente) dienen (siehe Abbildung 116)

Abbildung 116 Position und Groumlszlige bestimmen

4493book Seite 33 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

34

Zunaumlchst ein Hinweis zu den benoumltigten Namensraumlumen die oberhalb der

Klasse eingebunden werden

using Systemusing SystemDrawingusing SystemWindowsForms

Listing 15 Projekt raquoSteuerelementelaquo Namensraumlume

Gegenuumlber dem vorherigen Projekt ist noch der Namensraum SystemDra-

wing hinzugekommen der beim Zugriff auf Positions- Groumlszligen- oder Farb-

angaben benoumltigt wird Die drei genannten Namensraumlume reichen bei vie-

len Projekten aus

Es wird nachfolgend generell nur der Teil des Programmcodes angezeigt

der veraumlndert wurde

private void CmdPositionRel_Click()

CmdTestLocation = new Point(CmdTestLocationX + 20 CmdTestLocationY)

private void CmdPositionAbs_Click()

CmdTestLocation = new Point(100 200)private void CmdGroesseRel_Click()

CmdTestSize = new Size(CmdTestSizeWidth + 20 CmdTestSizeHeight)

private void CmdGroesseAbs_Click()

CmdTestSize = new Size(50 100)

Listing 16 Projekt raquoSteuerelementelaquo

4493book Seite 34 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

35

1Zur Erlaumluterung

Verkuumlrzte

Darstellung

Der Kopfteil der einzelnen Methoden wird aus Gruumlnden der Uumlbersicht-

lichkeit jeweils in verkuumlrzter Form abgebildet Das wird bei den meisten

nachfolgenden Beispielen ebenfalls so sein auszliger wenn es genau auf die

Inhalte des Methodenkopfs ankommt

Das Formular enthaumllt fuumlnf Buttons Die oberen vier Buttons dienen der

Veraumlnderung von Position und Groumlszlige des fuumlnften Buttons

Die Position eines Elements kann relativ zur aktuellen Position oder auf

absolute Werte eingestellt werden Das Gleiche gilt fuumlr die Groumlszlige eines

Elements

Bei beiden Angaben handelt es sich um Wertepaare (XY bzw Breite

Houmlhe)

new Point 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 bereitzu-

stellen

X Y Bei Betaumltigung des Buttons Position Abs wird die Position des fuumlnften

Buttons auf die Werte X=100 und Y=200 gestellt jeweils gemessen von der

linken oberen Ecke des Formulars

Bei Betaumltigung des Buttons Position Rel wird die Position des fuumlnften

Buttons auf die Werte X = CmdTestLocationX + 20 und Y = CmdTestLoca-

tionY gestellt Bei X wird also der alte Wert der Komponente X um 20 er-

houmlht das Element bewegt sich nach rechts Bei Y wird der alte Wert der

Komponente Y nicht veraumlndert das Element bewegt sich somit nicht

nach oben oder unten

Size Zur Einstellung der Groumlszlige dient die Struktur Size

Width Height Bei Betaumltigung des Buttons Groumlsse Abs wird die Groumlszlige des fuumlnften But-

tons auf die Werte Width = 50 und Height = 100 gestellt

Bei Betaumltigung des Buttons Groumlsse Rel wird die Groumlszlige des fuumlnften

Buttons auf die Werte Width = CmdTestSizeWidth + 20 und Height = Cmd-

TestSizeHeight gestellt Bei Width wird also der alte Wert der Kompo-

nente Width um 20 erhoumlht das Element wird breiter Bei Height wird der

fruumlhere Wert der Komponente Height nicht veraumlndert das Element ver-

aumlndert seine Houmlhe daher nicht

Nach einigen Klicks sieht das Formular aus wie das in Abbildung 117

4493book Seite 35 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

36

Abbildung 117 Veraumlnderung von Eigenschaften zur Laufzeit

154 Vergabe und Verwendung von Namen

Beachten Sie in allen Programmen dass jedes Steuerelement seinen eige-

nen eindeutigen Namen hat und immer mit diesem Namen angesprochen

werden muss Besonders am Anfang passiert es erfahrungsgemaumlszlig haumlufig

dass ein Programm nur deshalb nicht zum gewuumlnschten Erfolg fuumlhrt weil

ein nicht vorhandener Name verwendet wird In diesem Zusammenhang

moumlchte ich noch einmal auf die Namenskonventionen hinweisen

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 uumlber Typ und Funktion

des Steuerelements Falls Sie beim Schreiben von Programmcode anschlie-

szligend diese Namen z B vollstaumlndig in Kleinbuchstaben eingeben werden

Sie nach Verlassen der Zeile darauf aufmerksam gemacht Sie koumlnnen so

schnell erkennen ob Sie tatsaumlchlich ein vorhandenes Steuerelement ver-

wendet haben

155 Verknuumlpfung von Texten mehrzeilige Texte

+ zur Verkettung Mithilfe des Zeichens + koumlnnen mehrere Texte miteinander verknuumlpft wer-

den Falls ein einzelner Zahlenwert zwischen den Texten steht wird er vor-

her in einen Text umgewandelt Aufgepasst Falls mehrere Zahlenwerte

direkt nacheinander mithilfe des Zeichens + verknuumlpft werden werden sie

zunaumlchst mathematisch addiert

4493book Seite 36 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

37

1nFalls Sie eine mehrzeilige Ausgabe wuumlnschen koumlnnen Sie einen Zeilenvor-

schub mithilfe der Zeichenfolge n (fuumlr new line) erzeugen

Nachfolgend wird das Formular des Projekts Steuerelemente vergroumlszligert

zum Beispiel auf 500 times 400 Anschlieszligend wird es um ein Label ergaumlnzt in

dem die aktuelle Position und Groumlszlige des Buttons angezeigt werden Das

soll nach Betaumltigung des Buttons Anzeige geschehen

private void CmdAnzeige_Click()

LblAnzeigeText = Position X + CmdTestLocationX + Y + CmdTestLocationY + n + Groumlszlige Breite +CmdTestSizeWidth + Houmlhe + CmdTestSizeHeight

Listing 17 Projekt raquoSteuerelementelaquo mit Anzeige

Nach einigen Klicks und der Betaumltigung des Buttons Anzeige sieht das For-

mular aus wie das in Abbildung 118

Abbildung 118 Anzeige der Eigenschaften

156 Eigenschaft BackColor Farben allgemein

BackColorDie Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-

Color festgelegt Dabei koumlnnen Sie die Farbe zur Entwicklungszeit leicht

mithilfe einer Farbpalette oder aus Systemfarben auswaumlhlen

ColorHintergrundfarben und andere Farben koumlnnen Sie auch zur Laufzeit ein-

stellen Dabei bedienen Sie sich der Farbwerte die Sie uumlber die Struktur Co-

lor auswaumlhlen

Ein Beispiel ebenfalls im Projekt Steuerelemente

4493book Seite 37 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

38

private void CmdFarbe_Click()

BackColor = ColorYellowLblAnzeigeBackColor = ColorFromArgb(192 255 0)

Listing 18 Projekt raquoSteuerelementelaquo mit Farben

Zur Erlaumluterung

Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften z B

Yellow Der Wert kann der Eigenschaft BackColor des Steuerelements zu-

gewiesen werden hier aber handelt es sich um das Formular selbst

FromArgb() Auszligerdem bietet die Struktur die Methode FromArgb() Diese koumlnnen Sie

auf verschiedene Arten aufrufen Eine dieser Arten erwartet genau drei

Parameter naumlmlich die Werte fuumlr Rot Gruumln und Blau jeweils zwischen 0

und 255

Das Formular sieht nach der Aumlnderung der Eigenschaft Farbe aus wie das in

Abbildung 119

Abbildung 119 Nach Aumlnderung der Eigenschaft raquoFarbelaquo

4493book Seite 38 Mittwoch 8 Maumlrz 2017 112 13

39

2

Kapitel 2

Grundlagen

In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-

lagen von C in Verbindung mit den gaumlngigen Steuerelementen von

Windows-Programmen

In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

mierung wie Variablen Operatoren Verzweigungen und Schleifen gemein-

sam mit wohlbekannten haumlufig verwendeten Steuerelementen kennen

21 Variablen und Datentypen

Variablen dienen der voruumlbergehenden Speicherung von Daten die sich

waumlhrend der Laufzeit eines Programms aumlndern koumlnnen Eine Variable be-

sitzt einen eindeutigen Namen unter dem sie angesprochen werden kann

211 Namen Werte

NamensregelnFuumlr die Namen von Variablen gelten in C die folgenden Regeln

Sie beginnen mit einem Buchstaben

Sie koumlnnen nur aus Buchstaben Zahlen und einigen wenigen Sonderzei-

chen (wie z B dem Unterstrich _) bestehen

Sie duumlrfen Umlaute oder auch das scharfe szlig enthalten Allerdings kann

das zu Fehlern im Einsatz unter anderssprachigen Umgebungen fuumlhren

Daher rate ich davon ab

Innerhalb eines Guumlltigkeitsbereichs darf es keine zwei Variablen mit

dem gleichen Namen geben (siehe Abschnitt 214)

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

4493book Seite 39 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

1 Einfuumlhrung

24

Abbildung 111 Registerkarten

Nach erfolgtem Doppelklick auf den Button Hallo erscheinen im Code-

fenster die folgenden Eintraumlge

using Systemusing SystemWindowsForms

namespace MeinErstes

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdHallo_Click(object sender EventArgs e)

Listing 11 Projekt raquoMeinErsteslaquo Button raquoHallolaquo ohne Code

Zur Erlaumluterung

Grundsaumltzlich gilt dass Sie sich nicht von der Vielzahl der automatisch

erzeugten Zeilen und den noch unbekannten Inhalten abschrecken las-

sen sollten

Zunaumlchst das Wichtigste Innerhalb der geschweiften Klammern der

Ereignismethode CmdHallo_Click() wird spaumlter Ihr eigener Programm-

code hinzugefuumlgt

4493book Seite 24 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

25

1Zu den anderen Bestandteilen (die erst spaumlter fuumlr das eigene Programmie-

ren wichtig werden)

Namensraum C ist eine objektorientierte Sprache Ein wichtiges Element objektori-

entierter Sprachen sind die so genannten Klassen Klassen eroumlffnen wei-

tere Programmiermoumlglichkeiten Namensraumlume wiederum beinhalten

zusammengehoumlrige Klassen

using In obigem Listing koumlnnen Sie erkennen dass einige Programmzeilen

die mit using beginnen bereits entfernt wurden Das Schluumlsselwort

using dient zum Einbinden von Namensraumlumen in das aktuelle Projekt

Da wir die Klassen in diesen Namensraumlumen nicht benoumltigen wurden

die betreffenden Zeilen entfernt

Seit der Version 2015 von Visual Studio werden solche uumlberfluumlssigen Ele-

mente in grauer Schriftfarbe dargestellt Falls sich der Cursor in einer der

betreffenden Zeilen befindet erscheint links von der Zeile eine gelbe

Gluumlhbirne Platzieren Sie den Mauszeiger uumlber dieser Gluumlhbirne koumlnnen

Sie sich Hinweise dazu anzeigen lassen wie die uumlberfluumlssigen Elemente

ganz entfernt werden koumlnnen

namespace Oberhalb von public partial class und von private void erschei-

nen auszligerdem seit Visual Studio 2015 automatisch weitere Informatio-

nen zur Klasse Form1 und ihren Elementen in kleiner grauer Schrift wie

zum Beispiel 0 references oder 3 references Auch diese koumlnnen wir zu-

naumlchst noch ignorieren

Dieses erste Projekt verfuumlgt uumlber einen eigenen Namensraum (engl

namespace) daher namespace MeinErstes

public partial class Alle Elemente des aktuellen Formulars Form1 stehen innerhalb der

oumlffentlich zugaumlnglichen Klasse Form1 daher public class Form1 Ein Teil

der Elemente steht in dieser Datei ein anderer Teil der ebenfalls auto-

matisch erzeugt wurde steht in einer anderen hier nicht sichtbaren

Datei daher der Zusatz partial (dt teilweise)

Die Methode InitializeComponent() beinhaltet Programmzeilen die das

Aussehen und Verhalten der Steuerelemente des Programms bestim-

men

private void Der Zusatz private bedeutet dass die Ereignismethode CmdHalloClick()

nur in dieser Klasse bekannt ist Mit void wird gekennzeichnet dass die-

se Methode lediglich etwas ausfuumlhrt aber kein Ergebnis zuruumlckliefert

4493book Seite 25 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

26

Auf weitere Einzelheiten dieser automatisch erzeugten Bestandteile

wird zu einem spaumlteren Zeitpunkt eingegangen da es hier noch nicht

notwendig ist und eher verwirren wuumlrde

Der anfaumlnglich ausgefuumlhrte Doppelklick fuumlhrt immer zu dem Ereignis das

am haumlufigsten mit dem betreffenden Steuerelement verbunden wird

Click Das ist beim Button natuumlrlich das Ereignis Click Zu einem Steuerelement

gibt es aber auch noch andere moumlgliche Ereignisse

Bei den nachfolgenden Programmen werden nicht mehr alle Teile des Pro-

grammcodes im Buch abgebildet sondern nur noch

die Teile die vom Entwickler per Codeeingabe erzeugt werden

und die Teile des automatisch erzeugten Codes die wichtig fuumlr das allge-

meine Verstaumlndnis sind

Den vollstaumlndigen Programmcode koumlnnen Sie aber jederzeit betrachten

wenn Sie die Beispielprojekte laden bzw ausprobieren

146 Schreiben von Programmcode

In der Methode CmdHallo_Click() soll eine Befehlszeile eingefuumlgt werden

sodass sie anschlieszligend wie folgt aussieht

private void CmdHallo_Click(object sender EventArgs e)

LblAnzeigeText = Hallo

Listing 12 Projekt raquoMeinErsteslaquo Button raquoHallolaquo mit Code

Der Text muss in Anfuumlhrungszeichen gesetzt werden da C sonst an-

nimmt dass es sich um eine Variable mit dem Namen Hallo handelt

Anweisung Der Inhalt einer Methode setzt sich aus einzelnen Anweisungen zusam-

men die nacheinander ausgefuumlhrt werden Die vorliegende Methode ent-

haumllt nur eine Anweisung in ihr wird mithilfe des Gleichheitszeichens eine

Zuweisung durchgefuumlhrt

Zuweisung Bei einer Zuweisung wird der Ausdruck rechts vom Gleichheitszeichen

ausgewertet und der Variablen der Objekteigenschaft oder der Steuerele-

menteigenschaft links vom Gleichheitszeichen zugewiesen Die Zeichen-

4493book Seite 26 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

27

1kette Hallo wird der Eigenschaft Text des Steuerelements LblAnzeige mit-

tels folgender Schreibweise SteuerelementEigenschaft = Wert zugewiesen

Das fuumlhrt zur Anzeige des Werts

Nach dem Wechsel auf die Formularansicht koumlnnen Sie das naumlchste Steuer-

element auswaumlhlen fuumlr das eine Ereignismethode geschrieben werden soll

Code editierenInnerhalb des Codefensters kann Text mit den gaumlngigen Methoden der

Textverarbeitung editiert kopiert verschoben und geloumlscht werden

In der Ereignismethode CmdEnde_Click() soll der folgende Code stehen

private void CmdEnde_Click(object sender EventArgs e)

Close()

Listing 13 Projekt raquoMeinErsteslaquo Button raquoEndelaquo

Close()Die Methode Close() dient dem Schlieszligen eines Formulars Da es sich um

das einzige Formular dieses Projekts handelt wird dadurch das Programm

beendet und die gesamte Windows-Anwendung geschlossen

Dies waren einige Beispiele zur Aumlnderung der Eigenschaften eines Steuer-

elements zur Laufzeit des Programms durch Programmcode Sie erinnern

sich Zu Beginn hatten wir bereits die Starteigenschaften der Steuerele-

mente im Eigenschaften-Fenster eingestellt

147 Kommentare

Bei laumlngeren Programmen mit vielen Anweisungen gehoumlrt es zum guten

Programmierstil Kommentarzeilen zu schreiben In diesen Zeilen werden

einzelne Anweisungen oder auch laumlngere Bloumlcke von Anweisungen er-

laumlutert damit Sie selbst oder auch ein anderer Programmierer sie spaumlter

leichter nachvollziehen koumlnnen Alle Zeichen innerhalb eines Kommen-

tars werden nicht uumlbersetzt oder ausgefuumlhrt

Kommentar Ein Kommentar beginnt mit der Zeichenkombination endet mit der Zei-

chenkombination und kann sich uumlber mehrere Zeilen erstrecken

KommentarEine andere Moumlglichkeit ergibt sich durch die Zeichenkombination Ein

solcher Kommentar erstreckt sich nur bis zum Ende der Zeile

4493book Seite 27 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

28

Der folgende Programmcode wird um einen Kommentar ergaumlnzt

private void CmdEnde_Click(object sender EventArgs e)

Diese Anweisung beendetdas Programm

Close()

Listing 14 Projekt raquoMeinErsteslaquo Button raquoEndelaquo mit Kommentar

Code aus-

kommentieren

Hier noch ein kleiner Trick Sollen bestimmte Programmzeilen fuumlr einen

Test des Programms kurzfristig nicht ausgefuumlhrt werden koumlnnen Sie sie

auskommentieren indem Sie die Zeichenkombination vor die betreffen-

den Zeilen setzen Das geht sehr schnell indem Sie die betreffende(n)

Zeile(n) markieren und anschlieszligend das entsprechende Symbol in der

Symbolleiste anklicken siehe Abbildung 112 Rechts daneben befindet sich

das Symbol welches die Auskommentierung nach dem Test wieder ruumlck-

gaumlngig macht

Abbildung 112 Kommentar einaus

148 Starten Ausfuumlhren und Beenden des Programms

Programm starten Nach dem Einfuumlgen der Steuerelemente und dem Erstellen der Ereignis-

methoden ist das Programm fertig und kann gestartet werden Dazu

betaumltigen Sie den Start-Button in der Symbolleiste (dreieckiger gruumlner

Pfeil nach rechts) Alternativ starten Sie das Programm uumlber die Funk-

tionstaste (F5) oder den Menuumlpunkt Debuggen bull Debugging Starten

Das Formular erscheint und das Betaumltigen der Buttons fuumlhrt zum pro-

grammierten Ergebnis

Programm beenden Zur regulaumlren Beendigung eines Programms ist der Button mit der Auf-

schrift Ende vorgesehen Moumlchten Sie ein Programm waumlhrend des Verlaufs

vorzeitig abbrechen koumlnnen Sie auch den Ende-Button in der Symbolleiste

(rotes Quadrat) betaumltigen

4493book Seite 28 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

29

1FehlerTritt waumlhrend der Ausfuumlhrung eines Programms ein Fehler auf werden Sie

hierauf hingewiesen und das Codefenster zeigt die entsprechende Ereig-

nismethode sowie die fehlerhafte Zeile an In diesem Fall beenden Sie das

Programm korrigieren den Code und starten das Programm wieder

Programm testenEs ist empfehlenswert das Programm bereits waumlhrend der Entwicklung

mehrmals durch einen Aufruf zu testen und nicht erst wenn das Pro-

gramm vollstaumlndig erstellt worden ist Ein geeigneter Zeitpunkt dazu er-

gibt sich zum Beispiel

nach dem Einfuumlgen der Steuerelemente und dem Zuweisen der Eigen-

schaften die Sie zu Programmbeginn benoumltigen oder

nach dem Erstellen jeder Ereignismethode

149 Ausfuumlhrbares Programm

exe-DateiNach erfolgreichem Test des Programms koumlnnen Sie die ausfuumlhrbare Datei

(exe-Datei) auch auszligerhalb der Entwicklungsumgebung aufrufen Haben

Sie an den Grundeinstellungen nichts veraumlndert und die vorgeschlage-

nen Namen verwendet findet sich die zugehoumlrige exe-Datei des aktuellen

Projekts im Verzeichnis DokumenteVisual Studio 2017ProjectsMeinErs-

tesMeinErstesbinDebug Das Programm kann also ganz normal im Win-

dows-Explorer direkt uumlber Doppelklick gestartet werden

Die Weitergabe eines eigenen Windows-Programms auf einen anderen PC

ist etwas aufwendiger Dieser Vorgang wird im Anhang beschrieben

1410 Schlieszligen und Oumlffnen eines Projekts

Projekt schlieszligenUm ein Projekt zu schlieszligen waumlhlen Sie den Menuumlpunkt Datei bull Projekt-

mappe schliessen Falls Sie Veraumlnderungen vorgenommen haben wer-

den Sie vorher gefragt ob Sie diese Aumlnderungen speichern moumlchten

Wollen Sie die Projektdaten sicherheitshalber zwischendurch speichern ist

das uumlber den Menuumlpunkt Datei bull Alles speichern moumlglich Das ist bei

laumlngeren Entwicklungsphasen sehr zu empfehlen

Projekt oumlffnenZum Oumlffnen eines vorhandenen Projekts waumlhlen Sie den Menuumlpunkt

Datei bull oumlffnen bull Projekt Im darauffolgenden Dialogfeld Projekt oumlff-

nen waumlhlen Sie zunaumlchst das gewuumlnschte Projektverzeichnis aus und an-

schlieszligend die gleichnamige Datei mit der Endung sln

4493book Seite 29 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

30

Alle Beispielprojekte finden Sie auf wwwrheinwerk-verlagde4351 unter

raquoMaterialien zum Buchlaquo zum Download Sollte eines der Projekte einmal

nicht gestartet werden koumlnnen sollten Sie es uumlber den Menuumlpunkt Erstel-

len bull Projektmappe neu erstellen neu erstellen

1411 Uumlbung

Uumlbung UName Erzeugen Sie ein Windows-Programm mit einem Formular das zwei But-

tons und ein Label beinhaltet (siehe Abbildung 113) Bei Betaumltigung des

ersten Buttons erscheint im Label Ihr Name Bei Betaumltigung des zweiten

Buttons wird das Programm beendet Namensvorschlaumlge Projektname

UName Buttons CmdMeinName und CmdEnde Label LblMeinName

Abbildung 113 Uumlbung UName

1412 Empfehlungen fuumlr Zeilenumbruumlche

Zeilenumbruch Zeilenumbruumlche erhoumlhen die Lesbarkeit des Programmcodes Sie koumlnnen

jedoch nicht an jeder Stelle innerhalb einer Anweisung durchgefuumlhrt wer-

den Nachfolgend werden einige Stellen empfohlen

nach einer oumlffnenden Klammer (wie bereits gezeigt)

vor einer schlieszligenden Klammer

nach einem Komma

nach einem Operator und

nach einem Punkt hinter einem Objektnamen

Falls Sie einen Zeilenumbruch innerhalb einer Zeichenkette durchfuumlhren

werden seit Visual Studio 2017 zur Fehlervermeidung beide Teile der Zei-

chenkette automatisch durch Anfuumlhrungszeichen begrenzt und durch den

Verkettungsoperator + (siehe Abschnitt 224) miteinander verbunden

4493book Seite 30 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

31

115 Arbeiten mit Steuerelementen

151 Steuerelemente formatieren

HilfslinienZur besseren Anordnung der Steuerelemente auf dem Formular koumlnnen

Sie sie mithilfe der Maus nach Augenmaszlig verschieben Dabei erscheinen

automatisch Hilfslinien falls das aktuelle Element horizontal oder vertikal

parallel zu einem anderen Element steht

Mehrere Steuerele-

mente markieren

Weitere Moumlglichkeiten bieten die Menuumlpunkte im Menuuml Format In vie-

len Faumlllen muumlssen vorher mehrere Steuerelemente auf einmal markiert

werden (siehe Abbildung 114)

Abbildung 114 Mehrere markierte Elemente

Das geschieht entweder

durch Umrahmung der Elemente mit einem Rechteck nachdem Sie zu-

vor das Steuerelement Zeiger ausgewaumlhlt haben oder

durch Mehrfachauswahl indem Sie ab dem zweiten auszuwaumlhlenden

Steuerelement die (ordf)-Taste (wie fuumlr Groszligbuchstaben) oder die (Strg)-

Taste gedruumlckt halten

Menuuml raquoFormatlaquoUumlber das Menuuml Format haben Sie anschlieszligend folgende Moumlglichkeiten

zur Anpassung der Steuerelemente

Die ausgewaumlhlten Steuerelemente koumlnnen horizontal oder vertikal zu-

einander ausgerichtet werden (Menuuml Format bull Ausrichten)

Auch die horizontalen undoder vertikalen Dimensionen der ausge-

waumlhlten Steuerelemente koumlnnen angeglichen werden (Menuuml Format bull

Groumlsse angleichen)

4493book Seite 31 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

32

Einheitliche

Abstaumlnde

Zudem koumlnnen die horizontalen und vertikalen Abstaumlnde zwischen den

ausgewaumlhlten Steuerelementen angeglichen vergroumlszligert verkleinert

oder entfernt werden (Menuuml Format bull Horizontaler AbstandVer-

tikaler Abstand)

Die Steuerelemente koumlnnen auszligerdem horizontal oder vertikal inner-

halb des Formulars zentriert werden (Menuuml Format bull auf Formular

zentrieren)

Sollten sich die Steuerelemente teilweise uumlberlappen koumlnnen Sie einzel-

ne Steuerelemente in den Vorder- bzw Hintergrund schieben (Menuuml

Format bull Reihenfolge)

Sie koumlnnen alle Steuerelemente gleichzeitig gegen versehentliches Ver-

schieben absichern (Menuuml Format bull Steuerelemente Sperren) Diese

Sperrung gilt nur waumlhrend der Entwicklung des Programms

Abbildung 115 zeigt ein Formular mit drei Buttons die alle linksbuumlndig aus-

gerichtet sind und den gleichen vertikalen Abstand voneinander haben

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 markieren Sie darin

mehrere Steuerelemente und testen Sie anschlieszligend die einzelnen Moumlg-

lichkeiten des Format-Menuumls aus

Abbildung 115 Nach der Formatierung

152 Steuerelemente kopieren

Steuerelemente

kopieren

Zur schnelleren Erzeugung eines Projekts koumlnnen vorhandene Steuerele-

mente einschlieszliglich aller ihrer Eigenschaften kopiert werden Markieren

Sie hierzu die gewuumlnschten Steuerelemente und kopieren Sie sie entweder

4493book Seite 32 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

33

1 uumlber das Menuuml Bearbeiten bull Kopieren und das Menuuml Bearbeiten bull

Einfuumlgen oder

mit den Tastenkombinationen (Strg) + (C) und (Strg) + (V)

Anschlieszligend sollten Sie die neu erzeugten Steuerelemente direkt umbe-

nennen und an den gewuumlnschten Positionen anordnen

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 und kopieren Sie einzel-

ne Steuerelemente Kontrollieren Sie anschlieszligend die Liste der vorhan-

denen Steuerelemente im Eigenschaften-Fenster auf eine einheitliche

Namensgebung

153 Eigenschaften zur Laufzeit aumlndern

Size LocationSteuerelemente haben die Eigenschaften Size (mit den Komponenten

Width und Height) und Location (mit den Komponenten X und Y) zur Anga-

be von Groumlszlige und Position X und Y geben die Koordinaten der oberen lin-

ken Ecke des Steuerelements an gemessen von der oberen linken Ecke des

umgebenden Elements (meist das Formular) Saumlmtliche Werte werden in

Pixeln angegeben

Alle diese Eigenschaften koumlnnen sowohl waumlhrend der Entwicklungszeit als

auch waumlhrend der Laufzeit eines Projekts veraumlndert werden Zur Aumlnderung

waumlhrend der Entwicklungszeit koumlnnen Sie die Eigenschaftswerte wie ge-

wohnt im Eigenschaften-Fenster eingeben Als Beispiel fuumlr Aumlnderungen

waumlhrend der Laufzeit soll hingegen das folgende Programm (Projekt

Steuerelemente) dienen (siehe Abbildung 116)

Abbildung 116 Position und Groumlszlige bestimmen

4493book Seite 33 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

34

Zunaumlchst ein Hinweis zu den benoumltigten Namensraumlumen die oberhalb der

Klasse eingebunden werden

using Systemusing SystemDrawingusing SystemWindowsForms

Listing 15 Projekt raquoSteuerelementelaquo Namensraumlume

Gegenuumlber dem vorherigen Projekt ist noch der Namensraum SystemDra-

wing hinzugekommen der beim Zugriff auf Positions- Groumlszligen- oder Farb-

angaben benoumltigt wird Die drei genannten Namensraumlume reichen bei vie-

len Projekten aus

Es wird nachfolgend generell nur der Teil des Programmcodes angezeigt

der veraumlndert wurde

private void CmdPositionRel_Click()

CmdTestLocation = new Point(CmdTestLocationX + 20 CmdTestLocationY)

private void CmdPositionAbs_Click()

CmdTestLocation = new Point(100 200)private void CmdGroesseRel_Click()

CmdTestSize = new Size(CmdTestSizeWidth + 20 CmdTestSizeHeight)

private void CmdGroesseAbs_Click()

CmdTestSize = new Size(50 100)

Listing 16 Projekt raquoSteuerelementelaquo

4493book Seite 34 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

35

1Zur Erlaumluterung

Verkuumlrzte

Darstellung

Der Kopfteil der einzelnen Methoden wird aus Gruumlnden der Uumlbersicht-

lichkeit jeweils in verkuumlrzter Form abgebildet Das wird bei den meisten

nachfolgenden Beispielen ebenfalls so sein auszliger wenn es genau auf die

Inhalte des Methodenkopfs ankommt

Das Formular enthaumllt fuumlnf Buttons Die oberen vier Buttons dienen der

Veraumlnderung von Position und Groumlszlige des fuumlnften Buttons

Die Position eines Elements kann relativ zur aktuellen Position oder auf

absolute Werte eingestellt werden Das Gleiche gilt fuumlr die Groumlszlige eines

Elements

Bei beiden Angaben handelt es sich um Wertepaare (XY bzw Breite

Houmlhe)

new Point 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 bereitzu-

stellen

X Y Bei Betaumltigung des Buttons Position Abs wird die Position des fuumlnften

Buttons auf die Werte X=100 und Y=200 gestellt jeweils gemessen von der

linken oberen Ecke des Formulars

Bei Betaumltigung des Buttons Position Rel wird die Position des fuumlnften

Buttons auf die Werte X = CmdTestLocationX + 20 und Y = CmdTestLoca-

tionY gestellt Bei X wird also der alte Wert der Komponente X um 20 er-

houmlht das Element bewegt sich nach rechts Bei Y wird der alte Wert der

Komponente Y nicht veraumlndert das Element bewegt sich somit nicht

nach oben oder unten

Size Zur Einstellung der Groumlszlige dient die Struktur Size

Width Height Bei Betaumltigung des Buttons Groumlsse Abs wird die Groumlszlige des fuumlnften But-

tons auf die Werte Width = 50 und Height = 100 gestellt

Bei Betaumltigung des Buttons Groumlsse Rel wird die Groumlszlige des fuumlnften

Buttons auf die Werte Width = CmdTestSizeWidth + 20 und Height = Cmd-

TestSizeHeight gestellt Bei Width wird also der alte Wert der Kompo-

nente Width um 20 erhoumlht das Element wird breiter Bei Height wird der

fruumlhere Wert der Komponente Height nicht veraumlndert das Element ver-

aumlndert seine Houmlhe daher nicht

Nach einigen Klicks sieht das Formular aus wie das in Abbildung 117

4493book Seite 35 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

36

Abbildung 117 Veraumlnderung von Eigenschaften zur Laufzeit

154 Vergabe und Verwendung von Namen

Beachten Sie in allen Programmen dass jedes Steuerelement seinen eige-

nen eindeutigen Namen hat und immer mit diesem Namen angesprochen

werden muss Besonders am Anfang passiert es erfahrungsgemaumlszlig haumlufig

dass ein Programm nur deshalb nicht zum gewuumlnschten Erfolg fuumlhrt weil

ein nicht vorhandener Name verwendet wird In diesem Zusammenhang

moumlchte ich noch einmal auf die Namenskonventionen hinweisen

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 uumlber Typ und Funktion

des Steuerelements Falls Sie beim Schreiben von Programmcode anschlie-

szligend diese Namen z B vollstaumlndig in Kleinbuchstaben eingeben werden

Sie nach Verlassen der Zeile darauf aufmerksam gemacht Sie koumlnnen so

schnell erkennen ob Sie tatsaumlchlich ein vorhandenes Steuerelement ver-

wendet haben

155 Verknuumlpfung von Texten mehrzeilige Texte

+ zur Verkettung Mithilfe des Zeichens + koumlnnen mehrere Texte miteinander verknuumlpft wer-

den Falls ein einzelner Zahlenwert zwischen den Texten steht wird er vor-

her in einen Text umgewandelt Aufgepasst Falls mehrere Zahlenwerte

direkt nacheinander mithilfe des Zeichens + verknuumlpft werden werden sie

zunaumlchst mathematisch addiert

4493book Seite 36 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

37

1nFalls Sie eine mehrzeilige Ausgabe wuumlnschen koumlnnen Sie einen Zeilenvor-

schub mithilfe der Zeichenfolge n (fuumlr new line) erzeugen

Nachfolgend wird das Formular des Projekts Steuerelemente vergroumlszligert

zum Beispiel auf 500 times 400 Anschlieszligend wird es um ein Label ergaumlnzt in

dem die aktuelle Position und Groumlszlige des Buttons angezeigt werden Das

soll nach Betaumltigung des Buttons Anzeige geschehen

private void CmdAnzeige_Click()

LblAnzeigeText = Position X + CmdTestLocationX + Y + CmdTestLocationY + n + Groumlszlige Breite +CmdTestSizeWidth + Houmlhe + CmdTestSizeHeight

Listing 17 Projekt raquoSteuerelementelaquo mit Anzeige

Nach einigen Klicks und der Betaumltigung des Buttons Anzeige sieht das For-

mular aus wie das in Abbildung 118

Abbildung 118 Anzeige der Eigenschaften

156 Eigenschaft BackColor Farben allgemein

BackColorDie Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-

Color festgelegt Dabei koumlnnen Sie die Farbe zur Entwicklungszeit leicht

mithilfe einer Farbpalette oder aus Systemfarben auswaumlhlen

ColorHintergrundfarben und andere Farben koumlnnen Sie auch zur Laufzeit ein-

stellen Dabei bedienen Sie sich der Farbwerte die Sie uumlber die Struktur Co-

lor auswaumlhlen

Ein Beispiel ebenfalls im Projekt Steuerelemente

4493book Seite 37 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

38

private void CmdFarbe_Click()

BackColor = ColorYellowLblAnzeigeBackColor = ColorFromArgb(192 255 0)

Listing 18 Projekt raquoSteuerelementelaquo mit Farben

Zur Erlaumluterung

Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften z B

Yellow Der Wert kann der Eigenschaft BackColor des Steuerelements zu-

gewiesen werden hier aber handelt es sich um das Formular selbst

FromArgb() Auszligerdem bietet die Struktur die Methode FromArgb() Diese koumlnnen Sie

auf verschiedene Arten aufrufen Eine dieser Arten erwartet genau drei

Parameter naumlmlich die Werte fuumlr Rot Gruumln und Blau jeweils zwischen 0

und 255

Das Formular sieht nach der Aumlnderung der Eigenschaft Farbe aus wie das in

Abbildung 119

Abbildung 119 Nach Aumlnderung der Eigenschaft raquoFarbelaquo

4493book Seite 38 Mittwoch 8 Maumlrz 2017 112 13

39

2

Kapitel 2

Grundlagen

In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-

lagen von C in Verbindung mit den gaumlngigen Steuerelementen von

Windows-Programmen

In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

mierung wie Variablen Operatoren Verzweigungen und Schleifen gemein-

sam mit wohlbekannten haumlufig verwendeten Steuerelementen kennen

21 Variablen und Datentypen

Variablen dienen der voruumlbergehenden Speicherung von Daten die sich

waumlhrend der Laufzeit eines Programms aumlndern koumlnnen Eine Variable be-

sitzt einen eindeutigen Namen unter dem sie angesprochen werden kann

211 Namen Werte

NamensregelnFuumlr die Namen von Variablen gelten in C die folgenden Regeln

Sie beginnen mit einem Buchstaben

Sie koumlnnen nur aus Buchstaben Zahlen und einigen wenigen Sonderzei-

chen (wie z B dem Unterstrich _) bestehen

Sie duumlrfen Umlaute oder auch das scharfe szlig enthalten Allerdings kann

das zu Fehlern im Einsatz unter anderssprachigen Umgebungen fuumlhren

Daher rate ich davon ab

Innerhalb eines Guumlltigkeitsbereichs darf es keine zwei Variablen mit

dem gleichen Namen geben (siehe Abschnitt 214)

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

4493book Seite 39 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

1 Einfuumlhrung

26

Auf weitere Einzelheiten dieser automatisch erzeugten Bestandteile

wird zu einem spaumlteren Zeitpunkt eingegangen da es hier noch nicht

notwendig ist und eher verwirren wuumlrde

Der anfaumlnglich ausgefuumlhrte Doppelklick fuumlhrt immer zu dem Ereignis das

am haumlufigsten mit dem betreffenden Steuerelement verbunden wird

Click Das ist beim Button natuumlrlich das Ereignis Click Zu einem Steuerelement

gibt es aber auch noch andere moumlgliche Ereignisse

Bei den nachfolgenden Programmen werden nicht mehr alle Teile des Pro-

grammcodes im Buch abgebildet sondern nur noch

die Teile die vom Entwickler per Codeeingabe erzeugt werden

und die Teile des automatisch erzeugten Codes die wichtig fuumlr das allge-

meine Verstaumlndnis sind

Den vollstaumlndigen Programmcode koumlnnen Sie aber jederzeit betrachten

wenn Sie die Beispielprojekte laden bzw ausprobieren

146 Schreiben von Programmcode

In der Methode CmdHallo_Click() soll eine Befehlszeile eingefuumlgt werden

sodass sie anschlieszligend wie folgt aussieht

private void CmdHallo_Click(object sender EventArgs e)

LblAnzeigeText = Hallo

Listing 12 Projekt raquoMeinErsteslaquo Button raquoHallolaquo mit Code

Der Text muss in Anfuumlhrungszeichen gesetzt werden da C sonst an-

nimmt dass es sich um eine Variable mit dem Namen Hallo handelt

Anweisung Der Inhalt einer Methode setzt sich aus einzelnen Anweisungen zusam-

men die nacheinander ausgefuumlhrt werden Die vorliegende Methode ent-

haumllt nur eine Anweisung in ihr wird mithilfe des Gleichheitszeichens eine

Zuweisung durchgefuumlhrt

Zuweisung Bei einer Zuweisung wird der Ausdruck rechts vom Gleichheitszeichen

ausgewertet und der Variablen der Objekteigenschaft oder der Steuerele-

menteigenschaft links vom Gleichheitszeichen zugewiesen Die Zeichen-

4493book Seite 26 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

27

1kette Hallo wird der Eigenschaft Text des Steuerelements LblAnzeige mit-

tels folgender Schreibweise SteuerelementEigenschaft = Wert zugewiesen

Das fuumlhrt zur Anzeige des Werts

Nach dem Wechsel auf die Formularansicht koumlnnen Sie das naumlchste Steuer-

element auswaumlhlen fuumlr das eine Ereignismethode geschrieben werden soll

Code editierenInnerhalb des Codefensters kann Text mit den gaumlngigen Methoden der

Textverarbeitung editiert kopiert verschoben und geloumlscht werden

In der Ereignismethode CmdEnde_Click() soll der folgende Code stehen

private void CmdEnde_Click(object sender EventArgs e)

Close()

Listing 13 Projekt raquoMeinErsteslaquo Button raquoEndelaquo

Close()Die Methode Close() dient dem Schlieszligen eines Formulars Da es sich um

das einzige Formular dieses Projekts handelt wird dadurch das Programm

beendet und die gesamte Windows-Anwendung geschlossen

Dies waren einige Beispiele zur Aumlnderung der Eigenschaften eines Steuer-

elements zur Laufzeit des Programms durch Programmcode Sie erinnern

sich Zu Beginn hatten wir bereits die Starteigenschaften der Steuerele-

mente im Eigenschaften-Fenster eingestellt

147 Kommentare

Bei laumlngeren Programmen mit vielen Anweisungen gehoumlrt es zum guten

Programmierstil Kommentarzeilen zu schreiben In diesen Zeilen werden

einzelne Anweisungen oder auch laumlngere Bloumlcke von Anweisungen er-

laumlutert damit Sie selbst oder auch ein anderer Programmierer sie spaumlter

leichter nachvollziehen koumlnnen Alle Zeichen innerhalb eines Kommen-

tars werden nicht uumlbersetzt oder ausgefuumlhrt

Kommentar Ein Kommentar beginnt mit der Zeichenkombination endet mit der Zei-

chenkombination und kann sich uumlber mehrere Zeilen erstrecken

KommentarEine andere Moumlglichkeit ergibt sich durch die Zeichenkombination Ein

solcher Kommentar erstreckt sich nur bis zum Ende der Zeile

4493book Seite 27 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

28

Der folgende Programmcode wird um einen Kommentar ergaumlnzt

private void CmdEnde_Click(object sender EventArgs e)

Diese Anweisung beendetdas Programm

Close()

Listing 14 Projekt raquoMeinErsteslaquo Button raquoEndelaquo mit Kommentar

Code aus-

kommentieren

Hier noch ein kleiner Trick Sollen bestimmte Programmzeilen fuumlr einen

Test des Programms kurzfristig nicht ausgefuumlhrt werden koumlnnen Sie sie

auskommentieren indem Sie die Zeichenkombination vor die betreffen-

den Zeilen setzen Das geht sehr schnell indem Sie die betreffende(n)

Zeile(n) markieren und anschlieszligend das entsprechende Symbol in der

Symbolleiste anklicken siehe Abbildung 112 Rechts daneben befindet sich

das Symbol welches die Auskommentierung nach dem Test wieder ruumlck-

gaumlngig macht

Abbildung 112 Kommentar einaus

148 Starten Ausfuumlhren und Beenden des Programms

Programm starten Nach dem Einfuumlgen der Steuerelemente und dem Erstellen der Ereignis-

methoden ist das Programm fertig und kann gestartet werden Dazu

betaumltigen Sie den Start-Button in der Symbolleiste (dreieckiger gruumlner

Pfeil nach rechts) Alternativ starten Sie das Programm uumlber die Funk-

tionstaste (F5) oder den Menuumlpunkt Debuggen bull Debugging Starten

Das Formular erscheint und das Betaumltigen der Buttons fuumlhrt zum pro-

grammierten Ergebnis

Programm beenden Zur regulaumlren Beendigung eines Programms ist der Button mit der Auf-

schrift Ende vorgesehen Moumlchten Sie ein Programm waumlhrend des Verlaufs

vorzeitig abbrechen koumlnnen Sie auch den Ende-Button in der Symbolleiste

(rotes Quadrat) betaumltigen

4493book Seite 28 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

29

1FehlerTritt waumlhrend der Ausfuumlhrung eines Programms ein Fehler auf werden Sie

hierauf hingewiesen und das Codefenster zeigt die entsprechende Ereig-

nismethode sowie die fehlerhafte Zeile an In diesem Fall beenden Sie das

Programm korrigieren den Code und starten das Programm wieder

Programm testenEs ist empfehlenswert das Programm bereits waumlhrend der Entwicklung

mehrmals durch einen Aufruf zu testen und nicht erst wenn das Pro-

gramm vollstaumlndig erstellt worden ist Ein geeigneter Zeitpunkt dazu er-

gibt sich zum Beispiel

nach dem Einfuumlgen der Steuerelemente und dem Zuweisen der Eigen-

schaften die Sie zu Programmbeginn benoumltigen oder

nach dem Erstellen jeder Ereignismethode

149 Ausfuumlhrbares Programm

exe-DateiNach erfolgreichem Test des Programms koumlnnen Sie die ausfuumlhrbare Datei

(exe-Datei) auch auszligerhalb der Entwicklungsumgebung aufrufen Haben

Sie an den Grundeinstellungen nichts veraumlndert und die vorgeschlage-

nen Namen verwendet findet sich die zugehoumlrige exe-Datei des aktuellen

Projekts im Verzeichnis DokumenteVisual Studio 2017ProjectsMeinErs-

tesMeinErstesbinDebug Das Programm kann also ganz normal im Win-

dows-Explorer direkt uumlber Doppelklick gestartet werden

Die Weitergabe eines eigenen Windows-Programms auf einen anderen PC

ist etwas aufwendiger Dieser Vorgang wird im Anhang beschrieben

1410 Schlieszligen und Oumlffnen eines Projekts

Projekt schlieszligenUm ein Projekt zu schlieszligen waumlhlen Sie den Menuumlpunkt Datei bull Projekt-

mappe schliessen Falls Sie Veraumlnderungen vorgenommen haben wer-

den Sie vorher gefragt ob Sie diese Aumlnderungen speichern moumlchten

Wollen Sie die Projektdaten sicherheitshalber zwischendurch speichern ist

das uumlber den Menuumlpunkt Datei bull Alles speichern moumlglich Das ist bei

laumlngeren Entwicklungsphasen sehr zu empfehlen

Projekt oumlffnenZum Oumlffnen eines vorhandenen Projekts waumlhlen Sie den Menuumlpunkt

Datei bull oumlffnen bull Projekt Im darauffolgenden Dialogfeld Projekt oumlff-

nen waumlhlen Sie zunaumlchst das gewuumlnschte Projektverzeichnis aus und an-

schlieszligend die gleichnamige Datei mit der Endung sln

4493book Seite 29 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

30

Alle Beispielprojekte finden Sie auf wwwrheinwerk-verlagde4351 unter

raquoMaterialien zum Buchlaquo zum Download Sollte eines der Projekte einmal

nicht gestartet werden koumlnnen sollten Sie es uumlber den Menuumlpunkt Erstel-

len bull Projektmappe neu erstellen neu erstellen

1411 Uumlbung

Uumlbung UName Erzeugen Sie ein Windows-Programm mit einem Formular das zwei But-

tons und ein Label beinhaltet (siehe Abbildung 113) Bei Betaumltigung des

ersten Buttons erscheint im Label Ihr Name Bei Betaumltigung des zweiten

Buttons wird das Programm beendet Namensvorschlaumlge Projektname

UName Buttons CmdMeinName und CmdEnde Label LblMeinName

Abbildung 113 Uumlbung UName

1412 Empfehlungen fuumlr Zeilenumbruumlche

Zeilenumbruch Zeilenumbruumlche erhoumlhen die Lesbarkeit des Programmcodes Sie koumlnnen

jedoch nicht an jeder Stelle innerhalb einer Anweisung durchgefuumlhrt wer-

den Nachfolgend werden einige Stellen empfohlen

nach einer oumlffnenden Klammer (wie bereits gezeigt)

vor einer schlieszligenden Klammer

nach einem Komma

nach einem Operator und

nach einem Punkt hinter einem Objektnamen

Falls Sie einen Zeilenumbruch innerhalb einer Zeichenkette durchfuumlhren

werden seit Visual Studio 2017 zur Fehlervermeidung beide Teile der Zei-

chenkette automatisch durch Anfuumlhrungszeichen begrenzt und durch den

Verkettungsoperator + (siehe Abschnitt 224) miteinander verbunden

4493book Seite 30 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

31

115 Arbeiten mit Steuerelementen

151 Steuerelemente formatieren

HilfslinienZur besseren Anordnung der Steuerelemente auf dem Formular koumlnnen

Sie sie mithilfe der Maus nach Augenmaszlig verschieben Dabei erscheinen

automatisch Hilfslinien falls das aktuelle Element horizontal oder vertikal

parallel zu einem anderen Element steht

Mehrere Steuerele-

mente markieren

Weitere Moumlglichkeiten bieten die Menuumlpunkte im Menuuml Format In vie-

len Faumlllen muumlssen vorher mehrere Steuerelemente auf einmal markiert

werden (siehe Abbildung 114)

Abbildung 114 Mehrere markierte Elemente

Das geschieht entweder

durch Umrahmung der Elemente mit einem Rechteck nachdem Sie zu-

vor das Steuerelement Zeiger ausgewaumlhlt haben oder

durch Mehrfachauswahl indem Sie ab dem zweiten auszuwaumlhlenden

Steuerelement die (ordf)-Taste (wie fuumlr Groszligbuchstaben) oder die (Strg)-

Taste gedruumlckt halten

Menuuml raquoFormatlaquoUumlber das Menuuml Format haben Sie anschlieszligend folgende Moumlglichkeiten

zur Anpassung der Steuerelemente

Die ausgewaumlhlten Steuerelemente koumlnnen horizontal oder vertikal zu-

einander ausgerichtet werden (Menuuml Format bull Ausrichten)

Auch die horizontalen undoder vertikalen Dimensionen der ausge-

waumlhlten Steuerelemente koumlnnen angeglichen werden (Menuuml Format bull

Groumlsse angleichen)

4493book Seite 31 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

32

Einheitliche

Abstaumlnde

Zudem koumlnnen die horizontalen und vertikalen Abstaumlnde zwischen den

ausgewaumlhlten Steuerelementen angeglichen vergroumlszligert verkleinert

oder entfernt werden (Menuuml Format bull Horizontaler AbstandVer-

tikaler Abstand)

Die Steuerelemente koumlnnen auszligerdem horizontal oder vertikal inner-

halb des Formulars zentriert werden (Menuuml Format bull auf Formular

zentrieren)

Sollten sich die Steuerelemente teilweise uumlberlappen koumlnnen Sie einzel-

ne Steuerelemente in den Vorder- bzw Hintergrund schieben (Menuuml

Format bull Reihenfolge)

Sie koumlnnen alle Steuerelemente gleichzeitig gegen versehentliches Ver-

schieben absichern (Menuuml Format bull Steuerelemente Sperren) Diese

Sperrung gilt nur waumlhrend der Entwicklung des Programms

Abbildung 115 zeigt ein Formular mit drei Buttons die alle linksbuumlndig aus-

gerichtet sind und den gleichen vertikalen Abstand voneinander haben

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 markieren Sie darin

mehrere Steuerelemente und testen Sie anschlieszligend die einzelnen Moumlg-

lichkeiten des Format-Menuumls aus

Abbildung 115 Nach der Formatierung

152 Steuerelemente kopieren

Steuerelemente

kopieren

Zur schnelleren Erzeugung eines Projekts koumlnnen vorhandene Steuerele-

mente einschlieszliglich aller ihrer Eigenschaften kopiert werden Markieren

Sie hierzu die gewuumlnschten Steuerelemente und kopieren Sie sie entweder

4493book Seite 32 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

33

1 uumlber das Menuuml Bearbeiten bull Kopieren und das Menuuml Bearbeiten bull

Einfuumlgen oder

mit den Tastenkombinationen (Strg) + (C) und (Strg) + (V)

Anschlieszligend sollten Sie die neu erzeugten Steuerelemente direkt umbe-

nennen und an den gewuumlnschten Positionen anordnen

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 und kopieren Sie einzel-

ne Steuerelemente Kontrollieren Sie anschlieszligend die Liste der vorhan-

denen Steuerelemente im Eigenschaften-Fenster auf eine einheitliche

Namensgebung

153 Eigenschaften zur Laufzeit aumlndern

Size LocationSteuerelemente haben die Eigenschaften Size (mit den Komponenten

Width und Height) und Location (mit den Komponenten X und Y) zur Anga-

be von Groumlszlige und Position X und Y geben die Koordinaten der oberen lin-

ken Ecke des Steuerelements an gemessen von der oberen linken Ecke des

umgebenden Elements (meist das Formular) Saumlmtliche Werte werden in

Pixeln angegeben

Alle diese Eigenschaften koumlnnen sowohl waumlhrend der Entwicklungszeit als

auch waumlhrend der Laufzeit eines Projekts veraumlndert werden Zur Aumlnderung

waumlhrend der Entwicklungszeit koumlnnen Sie die Eigenschaftswerte wie ge-

wohnt im Eigenschaften-Fenster eingeben Als Beispiel fuumlr Aumlnderungen

waumlhrend der Laufzeit soll hingegen das folgende Programm (Projekt

Steuerelemente) dienen (siehe Abbildung 116)

Abbildung 116 Position und Groumlszlige bestimmen

4493book Seite 33 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

34

Zunaumlchst ein Hinweis zu den benoumltigten Namensraumlumen die oberhalb der

Klasse eingebunden werden

using Systemusing SystemDrawingusing SystemWindowsForms

Listing 15 Projekt raquoSteuerelementelaquo Namensraumlume

Gegenuumlber dem vorherigen Projekt ist noch der Namensraum SystemDra-

wing hinzugekommen der beim Zugriff auf Positions- Groumlszligen- oder Farb-

angaben benoumltigt wird Die drei genannten Namensraumlume reichen bei vie-

len Projekten aus

Es wird nachfolgend generell nur der Teil des Programmcodes angezeigt

der veraumlndert wurde

private void CmdPositionRel_Click()

CmdTestLocation = new Point(CmdTestLocationX + 20 CmdTestLocationY)

private void CmdPositionAbs_Click()

CmdTestLocation = new Point(100 200)private void CmdGroesseRel_Click()

CmdTestSize = new Size(CmdTestSizeWidth + 20 CmdTestSizeHeight)

private void CmdGroesseAbs_Click()

CmdTestSize = new Size(50 100)

Listing 16 Projekt raquoSteuerelementelaquo

4493book Seite 34 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

35

1Zur Erlaumluterung

Verkuumlrzte

Darstellung

Der Kopfteil der einzelnen Methoden wird aus Gruumlnden der Uumlbersicht-

lichkeit jeweils in verkuumlrzter Form abgebildet Das wird bei den meisten

nachfolgenden Beispielen ebenfalls so sein auszliger wenn es genau auf die

Inhalte des Methodenkopfs ankommt

Das Formular enthaumllt fuumlnf Buttons Die oberen vier Buttons dienen der

Veraumlnderung von Position und Groumlszlige des fuumlnften Buttons

Die Position eines Elements kann relativ zur aktuellen Position oder auf

absolute Werte eingestellt werden Das Gleiche gilt fuumlr die Groumlszlige eines

Elements

Bei beiden Angaben handelt es sich um Wertepaare (XY bzw Breite

Houmlhe)

new Point 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 bereitzu-

stellen

X Y Bei Betaumltigung des Buttons Position Abs wird die Position des fuumlnften

Buttons auf die Werte X=100 und Y=200 gestellt jeweils gemessen von der

linken oberen Ecke des Formulars

Bei Betaumltigung des Buttons Position Rel wird die Position des fuumlnften

Buttons auf die Werte X = CmdTestLocationX + 20 und Y = CmdTestLoca-

tionY gestellt Bei X wird also der alte Wert der Komponente X um 20 er-

houmlht das Element bewegt sich nach rechts Bei Y wird der alte Wert der

Komponente Y nicht veraumlndert das Element bewegt sich somit nicht

nach oben oder unten

Size Zur Einstellung der Groumlszlige dient die Struktur Size

Width Height Bei Betaumltigung des Buttons Groumlsse Abs wird die Groumlszlige des fuumlnften But-

tons auf die Werte Width = 50 und Height = 100 gestellt

Bei Betaumltigung des Buttons Groumlsse Rel wird die Groumlszlige des fuumlnften

Buttons auf die Werte Width = CmdTestSizeWidth + 20 und Height = Cmd-

TestSizeHeight gestellt Bei Width wird also der alte Wert der Kompo-

nente Width um 20 erhoumlht das Element wird breiter Bei Height wird der

fruumlhere Wert der Komponente Height nicht veraumlndert das Element ver-

aumlndert seine Houmlhe daher nicht

Nach einigen Klicks sieht das Formular aus wie das in Abbildung 117

4493book Seite 35 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

36

Abbildung 117 Veraumlnderung von Eigenschaften zur Laufzeit

154 Vergabe und Verwendung von Namen

Beachten Sie in allen Programmen dass jedes Steuerelement seinen eige-

nen eindeutigen Namen hat und immer mit diesem Namen angesprochen

werden muss Besonders am Anfang passiert es erfahrungsgemaumlszlig haumlufig

dass ein Programm nur deshalb nicht zum gewuumlnschten Erfolg fuumlhrt weil

ein nicht vorhandener Name verwendet wird In diesem Zusammenhang

moumlchte ich noch einmal auf die Namenskonventionen hinweisen

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 uumlber Typ und Funktion

des Steuerelements Falls Sie beim Schreiben von Programmcode anschlie-

szligend diese Namen z B vollstaumlndig in Kleinbuchstaben eingeben werden

Sie nach Verlassen der Zeile darauf aufmerksam gemacht Sie koumlnnen so

schnell erkennen ob Sie tatsaumlchlich ein vorhandenes Steuerelement ver-

wendet haben

155 Verknuumlpfung von Texten mehrzeilige Texte

+ zur Verkettung Mithilfe des Zeichens + koumlnnen mehrere Texte miteinander verknuumlpft wer-

den Falls ein einzelner Zahlenwert zwischen den Texten steht wird er vor-

her in einen Text umgewandelt Aufgepasst Falls mehrere Zahlenwerte

direkt nacheinander mithilfe des Zeichens + verknuumlpft werden werden sie

zunaumlchst mathematisch addiert

4493book Seite 36 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

37

1nFalls Sie eine mehrzeilige Ausgabe wuumlnschen koumlnnen Sie einen Zeilenvor-

schub mithilfe der Zeichenfolge n (fuumlr new line) erzeugen

Nachfolgend wird das Formular des Projekts Steuerelemente vergroumlszligert

zum Beispiel auf 500 times 400 Anschlieszligend wird es um ein Label ergaumlnzt in

dem die aktuelle Position und Groumlszlige des Buttons angezeigt werden Das

soll nach Betaumltigung des Buttons Anzeige geschehen

private void CmdAnzeige_Click()

LblAnzeigeText = Position X + CmdTestLocationX + Y + CmdTestLocationY + n + Groumlszlige Breite +CmdTestSizeWidth + Houmlhe + CmdTestSizeHeight

Listing 17 Projekt raquoSteuerelementelaquo mit Anzeige

Nach einigen Klicks und der Betaumltigung des Buttons Anzeige sieht das For-

mular aus wie das in Abbildung 118

Abbildung 118 Anzeige der Eigenschaften

156 Eigenschaft BackColor Farben allgemein

BackColorDie Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-

Color festgelegt Dabei koumlnnen Sie die Farbe zur Entwicklungszeit leicht

mithilfe einer Farbpalette oder aus Systemfarben auswaumlhlen

ColorHintergrundfarben und andere Farben koumlnnen Sie auch zur Laufzeit ein-

stellen Dabei bedienen Sie sich der Farbwerte die Sie uumlber die Struktur Co-

lor auswaumlhlen

Ein Beispiel ebenfalls im Projekt Steuerelemente

4493book Seite 37 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

38

private void CmdFarbe_Click()

BackColor = ColorYellowLblAnzeigeBackColor = ColorFromArgb(192 255 0)

Listing 18 Projekt raquoSteuerelementelaquo mit Farben

Zur Erlaumluterung

Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften z B

Yellow Der Wert kann der Eigenschaft BackColor des Steuerelements zu-

gewiesen werden hier aber handelt es sich um das Formular selbst

FromArgb() Auszligerdem bietet die Struktur die Methode FromArgb() Diese koumlnnen Sie

auf verschiedene Arten aufrufen Eine dieser Arten erwartet genau drei

Parameter naumlmlich die Werte fuumlr Rot Gruumln und Blau jeweils zwischen 0

und 255

Das Formular sieht nach der Aumlnderung der Eigenschaft Farbe aus wie das in

Abbildung 119

Abbildung 119 Nach Aumlnderung der Eigenschaft raquoFarbelaquo

4493book Seite 38 Mittwoch 8 Maumlrz 2017 112 13

39

2

Kapitel 2

Grundlagen

In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-

lagen von C in Verbindung mit den gaumlngigen Steuerelementen von

Windows-Programmen

In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

mierung wie Variablen Operatoren Verzweigungen und Schleifen gemein-

sam mit wohlbekannten haumlufig verwendeten Steuerelementen kennen

21 Variablen und Datentypen

Variablen dienen der voruumlbergehenden Speicherung von Daten die sich

waumlhrend der Laufzeit eines Programms aumlndern koumlnnen Eine Variable be-

sitzt einen eindeutigen Namen unter dem sie angesprochen werden kann

211 Namen Werte

NamensregelnFuumlr die Namen von Variablen gelten in C die folgenden Regeln

Sie beginnen mit einem Buchstaben

Sie koumlnnen nur aus Buchstaben Zahlen und einigen wenigen Sonderzei-

chen (wie z B dem Unterstrich _) bestehen

Sie duumlrfen Umlaute oder auch das scharfe szlig enthalten Allerdings kann

das zu Fehlern im Einsatz unter anderssprachigen Umgebungen fuumlhren

Daher rate ich davon ab

Innerhalb eines Guumlltigkeitsbereichs darf es keine zwei Variablen mit

dem gleichen Namen geben (siehe Abschnitt 214)

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

4493book Seite 39 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

1 Einfuumlhrung

28

Der folgende Programmcode wird um einen Kommentar ergaumlnzt

private void CmdEnde_Click(object sender EventArgs e)

Diese Anweisung beendetdas Programm

Close()

Listing 14 Projekt raquoMeinErsteslaquo Button raquoEndelaquo mit Kommentar

Code aus-

kommentieren

Hier noch ein kleiner Trick Sollen bestimmte Programmzeilen fuumlr einen

Test des Programms kurzfristig nicht ausgefuumlhrt werden koumlnnen Sie sie

auskommentieren indem Sie die Zeichenkombination vor die betreffen-

den Zeilen setzen Das geht sehr schnell indem Sie die betreffende(n)

Zeile(n) markieren und anschlieszligend das entsprechende Symbol in der

Symbolleiste anklicken siehe Abbildung 112 Rechts daneben befindet sich

das Symbol welches die Auskommentierung nach dem Test wieder ruumlck-

gaumlngig macht

Abbildung 112 Kommentar einaus

148 Starten Ausfuumlhren und Beenden des Programms

Programm starten Nach dem Einfuumlgen der Steuerelemente und dem Erstellen der Ereignis-

methoden ist das Programm fertig und kann gestartet werden Dazu

betaumltigen Sie den Start-Button in der Symbolleiste (dreieckiger gruumlner

Pfeil nach rechts) Alternativ starten Sie das Programm uumlber die Funk-

tionstaste (F5) oder den Menuumlpunkt Debuggen bull Debugging Starten

Das Formular erscheint und das Betaumltigen der Buttons fuumlhrt zum pro-

grammierten Ergebnis

Programm beenden Zur regulaumlren Beendigung eines Programms ist der Button mit der Auf-

schrift Ende vorgesehen Moumlchten Sie ein Programm waumlhrend des Verlaufs

vorzeitig abbrechen koumlnnen Sie auch den Ende-Button in der Symbolleiste

(rotes Quadrat) betaumltigen

4493book Seite 28 Mittwoch 8 Maumlrz 2017 112 13

14 Visual Studio-Entwicklungsumgebung

29

1FehlerTritt waumlhrend der Ausfuumlhrung eines Programms ein Fehler auf werden Sie

hierauf hingewiesen und das Codefenster zeigt die entsprechende Ereig-

nismethode sowie die fehlerhafte Zeile an In diesem Fall beenden Sie das

Programm korrigieren den Code und starten das Programm wieder

Programm testenEs ist empfehlenswert das Programm bereits waumlhrend der Entwicklung

mehrmals durch einen Aufruf zu testen und nicht erst wenn das Pro-

gramm vollstaumlndig erstellt worden ist Ein geeigneter Zeitpunkt dazu er-

gibt sich zum Beispiel

nach dem Einfuumlgen der Steuerelemente und dem Zuweisen der Eigen-

schaften die Sie zu Programmbeginn benoumltigen oder

nach dem Erstellen jeder Ereignismethode

149 Ausfuumlhrbares Programm

exe-DateiNach erfolgreichem Test des Programms koumlnnen Sie die ausfuumlhrbare Datei

(exe-Datei) auch auszligerhalb der Entwicklungsumgebung aufrufen Haben

Sie an den Grundeinstellungen nichts veraumlndert und die vorgeschlage-

nen Namen verwendet findet sich die zugehoumlrige exe-Datei des aktuellen

Projekts im Verzeichnis DokumenteVisual Studio 2017ProjectsMeinErs-

tesMeinErstesbinDebug Das Programm kann also ganz normal im Win-

dows-Explorer direkt uumlber Doppelklick gestartet werden

Die Weitergabe eines eigenen Windows-Programms auf einen anderen PC

ist etwas aufwendiger Dieser Vorgang wird im Anhang beschrieben

1410 Schlieszligen und Oumlffnen eines Projekts

Projekt schlieszligenUm ein Projekt zu schlieszligen waumlhlen Sie den Menuumlpunkt Datei bull Projekt-

mappe schliessen Falls Sie Veraumlnderungen vorgenommen haben wer-

den Sie vorher gefragt ob Sie diese Aumlnderungen speichern moumlchten

Wollen Sie die Projektdaten sicherheitshalber zwischendurch speichern ist

das uumlber den Menuumlpunkt Datei bull Alles speichern moumlglich Das ist bei

laumlngeren Entwicklungsphasen sehr zu empfehlen

Projekt oumlffnenZum Oumlffnen eines vorhandenen Projekts waumlhlen Sie den Menuumlpunkt

Datei bull oumlffnen bull Projekt Im darauffolgenden Dialogfeld Projekt oumlff-

nen waumlhlen Sie zunaumlchst das gewuumlnschte Projektverzeichnis aus und an-

schlieszligend die gleichnamige Datei mit der Endung sln

4493book Seite 29 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

30

Alle Beispielprojekte finden Sie auf wwwrheinwerk-verlagde4351 unter

raquoMaterialien zum Buchlaquo zum Download Sollte eines der Projekte einmal

nicht gestartet werden koumlnnen sollten Sie es uumlber den Menuumlpunkt Erstel-

len bull Projektmappe neu erstellen neu erstellen

1411 Uumlbung

Uumlbung UName Erzeugen Sie ein Windows-Programm mit einem Formular das zwei But-

tons und ein Label beinhaltet (siehe Abbildung 113) Bei Betaumltigung des

ersten Buttons erscheint im Label Ihr Name Bei Betaumltigung des zweiten

Buttons wird das Programm beendet Namensvorschlaumlge Projektname

UName Buttons CmdMeinName und CmdEnde Label LblMeinName

Abbildung 113 Uumlbung UName

1412 Empfehlungen fuumlr Zeilenumbruumlche

Zeilenumbruch Zeilenumbruumlche erhoumlhen die Lesbarkeit des Programmcodes Sie koumlnnen

jedoch nicht an jeder Stelle innerhalb einer Anweisung durchgefuumlhrt wer-

den Nachfolgend werden einige Stellen empfohlen

nach einer oumlffnenden Klammer (wie bereits gezeigt)

vor einer schlieszligenden Klammer

nach einem Komma

nach einem Operator und

nach einem Punkt hinter einem Objektnamen

Falls Sie einen Zeilenumbruch innerhalb einer Zeichenkette durchfuumlhren

werden seit Visual Studio 2017 zur Fehlervermeidung beide Teile der Zei-

chenkette automatisch durch Anfuumlhrungszeichen begrenzt und durch den

Verkettungsoperator + (siehe Abschnitt 224) miteinander verbunden

4493book Seite 30 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

31

115 Arbeiten mit Steuerelementen

151 Steuerelemente formatieren

HilfslinienZur besseren Anordnung der Steuerelemente auf dem Formular koumlnnen

Sie sie mithilfe der Maus nach Augenmaszlig verschieben Dabei erscheinen

automatisch Hilfslinien falls das aktuelle Element horizontal oder vertikal

parallel zu einem anderen Element steht

Mehrere Steuerele-

mente markieren

Weitere Moumlglichkeiten bieten die Menuumlpunkte im Menuuml Format In vie-

len Faumlllen muumlssen vorher mehrere Steuerelemente auf einmal markiert

werden (siehe Abbildung 114)

Abbildung 114 Mehrere markierte Elemente

Das geschieht entweder

durch Umrahmung der Elemente mit einem Rechteck nachdem Sie zu-

vor das Steuerelement Zeiger ausgewaumlhlt haben oder

durch Mehrfachauswahl indem Sie ab dem zweiten auszuwaumlhlenden

Steuerelement die (ordf)-Taste (wie fuumlr Groszligbuchstaben) oder die (Strg)-

Taste gedruumlckt halten

Menuuml raquoFormatlaquoUumlber das Menuuml Format haben Sie anschlieszligend folgende Moumlglichkeiten

zur Anpassung der Steuerelemente

Die ausgewaumlhlten Steuerelemente koumlnnen horizontal oder vertikal zu-

einander ausgerichtet werden (Menuuml Format bull Ausrichten)

Auch die horizontalen undoder vertikalen Dimensionen der ausge-

waumlhlten Steuerelemente koumlnnen angeglichen werden (Menuuml Format bull

Groumlsse angleichen)

4493book Seite 31 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

32

Einheitliche

Abstaumlnde

Zudem koumlnnen die horizontalen und vertikalen Abstaumlnde zwischen den

ausgewaumlhlten Steuerelementen angeglichen vergroumlszligert verkleinert

oder entfernt werden (Menuuml Format bull Horizontaler AbstandVer-

tikaler Abstand)

Die Steuerelemente koumlnnen auszligerdem horizontal oder vertikal inner-

halb des Formulars zentriert werden (Menuuml Format bull auf Formular

zentrieren)

Sollten sich die Steuerelemente teilweise uumlberlappen koumlnnen Sie einzel-

ne Steuerelemente in den Vorder- bzw Hintergrund schieben (Menuuml

Format bull Reihenfolge)

Sie koumlnnen alle Steuerelemente gleichzeitig gegen versehentliches Ver-

schieben absichern (Menuuml Format bull Steuerelemente Sperren) Diese

Sperrung gilt nur waumlhrend der Entwicklung des Programms

Abbildung 115 zeigt ein Formular mit drei Buttons die alle linksbuumlndig aus-

gerichtet sind und den gleichen vertikalen Abstand voneinander haben

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 markieren Sie darin

mehrere Steuerelemente und testen Sie anschlieszligend die einzelnen Moumlg-

lichkeiten des Format-Menuumls aus

Abbildung 115 Nach der Formatierung

152 Steuerelemente kopieren

Steuerelemente

kopieren

Zur schnelleren Erzeugung eines Projekts koumlnnen vorhandene Steuerele-

mente einschlieszliglich aller ihrer Eigenschaften kopiert werden Markieren

Sie hierzu die gewuumlnschten Steuerelemente und kopieren Sie sie entweder

4493book Seite 32 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

33

1 uumlber das Menuuml Bearbeiten bull Kopieren und das Menuuml Bearbeiten bull

Einfuumlgen oder

mit den Tastenkombinationen (Strg) + (C) und (Strg) + (V)

Anschlieszligend sollten Sie die neu erzeugten Steuerelemente direkt umbe-

nennen und an den gewuumlnschten Positionen anordnen

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 und kopieren Sie einzel-

ne Steuerelemente Kontrollieren Sie anschlieszligend die Liste der vorhan-

denen Steuerelemente im Eigenschaften-Fenster auf eine einheitliche

Namensgebung

153 Eigenschaften zur Laufzeit aumlndern

Size LocationSteuerelemente haben die Eigenschaften Size (mit den Komponenten

Width und Height) und Location (mit den Komponenten X und Y) zur Anga-

be von Groumlszlige und Position X und Y geben die Koordinaten der oberen lin-

ken Ecke des Steuerelements an gemessen von der oberen linken Ecke des

umgebenden Elements (meist das Formular) Saumlmtliche Werte werden in

Pixeln angegeben

Alle diese Eigenschaften koumlnnen sowohl waumlhrend der Entwicklungszeit als

auch waumlhrend der Laufzeit eines Projekts veraumlndert werden Zur Aumlnderung

waumlhrend der Entwicklungszeit koumlnnen Sie die Eigenschaftswerte wie ge-

wohnt im Eigenschaften-Fenster eingeben Als Beispiel fuumlr Aumlnderungen

waumlhrend der Laufzeit soll hingegen das folgende Programm (Projekt

Steuerelemente) dienen (siehe Abbildung 116)

Abbildung 116 Position und Groumlszlige bestimmen

4493book Seite 33 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

34

Zunaumlchst ein Hinweis zu den benoumltigten Namensraumlumen die oberhalb der

Klasse eingebunden werden

using Systemusing SystemDrawingusing SystemWindowsForms

Listing 15 Projekt raquoSteuerelementelaquo Namensraumlume

Gegenuumlber dem vorherigen Projekt ist noch der Namensraum SystemDra-

wing hinzugekommen der beim Zugriff auf Positions- Groumlszligen- oder Farb-

angaben benoumltigt wird Die drei genannten Namensraumlume reichen bei vie-

len Projekten aus

Es wird nachfolgend generell nur der Teil des Programmcodes angezeigt

der veraumlndert wurde

private void CmdPositionRel_Click()

CmdTestLocation = new Point(CmdTestLocationX + 20 CmdTestLocationY)

private void CmdPositionAbs_Click()

CmdTestLocation = new Point(100 200)private void CmdGroesseRel_Click()

CmdTestSize = new Size(CmdTestSizeWidth + 20 CmdTestSizeHeight)

private void CmdGroesseAbs_Click()

CmdTestSize = new Size(50 100)

Listing 16 Projekt raquoSteuerelementelaquo

4493book Seite 34 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

35

1Zur Erlaumluterung

Verkuumlrzte

Darstellung

Der Kopfteil der einzelnen Methoden wird aus Gruumlnden der Uumlbersicht-

lichkeit jeweils in verkuumlrzter Form abgebildet Das wird bei den meisten

nachfolgenden Beispielen ebenfalls so sein auszliger wenn es genau auf die

Inhalte des Methodenkopfs ankommt

Das Formular enthaumllt fuumlnf Buttons Die oberen vier Buttons dienen der

Veraumlnderung von Position und Groumlszlige des fuumlnften Buttons

Die Position eines Elements kann relativ zur aktuellen Position oder auf

absolute Werte eingestellt werden Das Gleiche gilt fuumlr die Groumlszlige eines

Elements

Bei beiden Angaben handelt es sich um Wertepaare (XY bzw Breite

Houmlhe)

new Point 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 bereitzu-

stellen

X Y Bei Betaumltigung des Buttons Position Abs wird die Position des fuumlnften

Buttons auf die Werte X=100 und Y=200 gestellt jeweils gemessen von der

linken oberen Ecke des Formulars

Bei Betaumltigung des Buttons Position Rel wird die Position des fuumlnften

Buttons auf die Werte X = CmdTestLocationX + 20 und Y = CmdTestLoca-

tionY gestellt Bei X wird also der alte Wert der Komponente X um 20 er-

houmlht das Element bewegt sich nach rechts Bei Y wird der alte Wert der

Komponente Y nicht veraumlndert das Element bewegt sich somit nicht

nach oben oder unten

Size Zur Einstellung der Groumlszlige dient die Struktur Size

Width Height Bei Betaumltigung des Buttons Groumlsse Abs wird die Groumlszlige des fuumlnften But-

tons auf die Werte Width = 50 und Height = 100 gestellt

Bei Betaumltigung des Buttons Groumlsse Rel wird die Groumlszlige des fuumlnften

Buttons auf die Werte Width = CmdTestSizeWidth + 20 und Height = Cmd-

TestSizeHeight gestellt Bei Width wird also der alte Wert der Kompo-

nente Width um 20 erhoumlht das Element wird breiter Bei Height wird der

fruumlhere Wert der Komponente Height nicht veraumlndert das Element ver-

aumlndert seine Houmlhe daher nicht

Nach einigen Klicks sieht das Formular aus wie das in Abbildung 117

4493book Seite 35 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

36

Abbildung 117 Veraumlnderung von Eigenschaften zur Laufzeit

154 Vergabe und Verwendung von Namen

Beachten Sie in allen Programmen dass jedes Steuerelement seinen eige-

nen eindeutigen Namen hat und immer mit diesem Namen angesprochen

werden muss Besonders am Anfang passiert es erfahrungsgemaumlszlig haumlufig

dass ein Programm nur deshalb nicht zum gewuumlnschten Erfolg fuumlhrt weil

ein nicht vorhandener Name verwendet wird In diesem Zusammenhang

moumlchte ich noch einmal auf die Namenskonventionen hinweisen

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 uumlber Typ und Funktion

des Steuerelements Falls Sie beim Schreiben von Programmcode anschlie-

szligend diese Namen z B vollstaumlndig in Kleinbuchstaben eingeben werden

Sie nach Verlassen der Zeile darauf aufmerksam gemacht Sie koumlnnen so

schnell erkennen ob Sie tatsaumlchlich ein vorhandenes Steuerelement ver-

wendet haben

155 Verknuumlpfung von Texten mehrzeilige Texte

+ zur Verkettung Mithilfe des Zeichens + koumlnnen mehrere Texte miteinander verknuumlpft wer-

den Falls ein einzelner Zahlenwert zwischen den Texten steht wird er vor-

her in einen Text umgewandelt Aufgepasst Falls mehrere Zahlenwerte

direkt nacheinander mithilfe des Zeichens + verknuumlpft werden werden sie

zunaumlchst mathematisch addiert

4493book Seite 36 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

37

1nFalls Sie eine mehrzeilige Ausgabe wuumlnschen koumlnnen Sie einen Zeilenvor-

schub mithilfe der Zeichenfolge n (fuumlr new line) erzeugen

Nachfolgend wird das Formular des Projekts Steuerelemente vergroumlszligert

zum Beispiel auf 500 times 400 Anschlieszligend wird es um ein Label ergaumlnzt in

dem die aktuelle Position und Groumlszlige des Buttons angezeigt werden Das

soll nach Betaumltigung des Buttons Anzeige geschehen

private void CmdAnzeige_Click()

LblAnzeigeText = Position X + CmdTestLocationX + Y + CmdTestLocationY + n + Groumlszlige Breite +CmdTestSizeWidth + Houmlhe + CmdTestSizeHeight

Listing 17 Projekt raquoSteuerelementelaquo mit Anzeige

Nach einigen Klicks und der Betaumltigung des Buttons Anzeige sieht das For-

mular aus wie das in Abbildung 118

Abbildung 118 Anzeige der Eigenschaften

156 Eigenschaft BackColor Farben allgemein

BackColorDie Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-

Color festgelegt Dabei koumlnnen Sie die Farbe zur Entwicklungszeit leicht

mithilfe einer Farbpalette oder aus Systemfarben auswaumlhlen

ColorHintergrundfarben und andere Farben koumlnnen Sie auch zur Laufzeit ein-

stellen Dabei bedienen Sie sich der Farbwerte die Sie uumlber die Struktur Co-

lor auswaumlhlen

Ein Beispiel ebenfalls im Projekt Steuerelemente

4493book Seite 37 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

38

private void CmdFarbe_Click()

BackColor = ColorYellowLblAnzeigeBackColor = ColorFromArgb(192 255 0)

Listing 18 Projekt raquoSteuerelementelaquo mit Farben

Zur Erlaumluterung

Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften z B

Yellow Der Wert kann der Eigenschaft BackColor des Steuerelements zu-

gewiesen werden hier aber handelt es sich um das Formular selbst

FromArgb() Auszligerdem bietet die Struktur die Methode FromArgb() Diese koumlnnen Sie

auf verschiedene Arten aufrufen Eine dieser Arten erwartet genau drei

Parameter naumlmlich die Werte fuumlr Rot Gruumln und Blau jeweils zwischen 0

und 255

Das Formular sieht nach der Aumlnderung der Eigenschaft Farbe aus wie das in

Abbildung 119

Abbildung 119 Nach Aumlnderung der Eigenschaft raquoFarbelaquo

4493book Seite 38 Mittwoch 8 Maumlrz 2017 112 13

39

2

Kapitel 2

Grundlagen

In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-

lagen von C in Verbindung mit den gaumlngigen Steuerelementen von

Windows-Programmen

In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

mierung wie Variablen Operatoren Verzweigungen und Schleifen gemein-

sam mit wohlbekannten haumlufig verwendeten Steuerelementen kennen

21 Variablen und Datentypen

Variablen dienen der voruumlbergehenden Speicherung von Daten die sich

waumlhrend der Laufzeit eines Programms aumlndern koumlnnen Eine Variable be-

sitzt einen eindeutigen Namen unter dem sie angesprochen werden kann

211 Namen Werte

NamensregelnFuumlr die Namen von Variablen gelten in C die folgenden Regeln

Sie beginnen mit einem Buchstaben

Sie koumlnnen nur aus Buchstaben Zahlen und einigen wenigen Sonderzei-

chen (wie z B dem Unterstrich _) bestehen

Sie duumlrfen Umlaute oder auch das scharfe szlig enthalten Allerdings kann

das zu Fehlern im Einsatz unter anderssprachigen Umgebungen fuumlhren

Daher rate ich davon ab

Innerhalb eines Guumlltigkeitsbereichs darf es keine zwei Variablen mit

dem gleichen Namen geben (siehe Abschnitt 214)

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

4493book Seite 39 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

1 Einfuumlhrung

30

Alle Beispielprojekte finden Sie auf wwwrheinwerk-verlagde4351 unter

raquoMaterialien zum Buchlaquo zum Download Sollte eines der Projekte einmal

nicht gestartet werden koumlnnen sollten Sie es uumlber den Menuumlpunkt Erstel-

len bull Projektmappe neu erstellen neu erstellen

1411 Uumlbung

Uumlbung UName Erzeugen Sie ein Windows-Programm mit einem Formular das zwei But-

tons und ein Label beinhaltet (siehe Abbildung 113) Bei Betaumltigung des

ersten Buttons erscheint im Label Ihr Name Bei Betaumltigung des zweiten

Buttons wird das Programm beendet Namensvorschlaumlge Projektname

UName Buttons CmdMeinName und CmdEnde Label LblMeinName

Abbildung 113 Uumlbung UName

1412 Empfehlungen fuumlr Zeilenumbruumlche

Zeilenumbruch Zeilenumbruumlche erhoumlhen die Lesbarkeit des Programmcodes Sie koumlnnen

jedoch nicht an jeder Stelle innerhalb einer Anweisung durchgefuumlhrt wer-

den Nachfolgend werden einige Stellen empfohlen

nach einer oumlffnenden Klammer (wie bereits gezeigt)

vor einer schlieszligenden Klammer

nach einem Komma

nach einem Operator und

nach einem Punkt hinter einem Objektnamen

Falls Sie einen Zeilenumbruch innerhalb einer Zeichenkette durchfuumlhren

werden seit Visual Studio 2017 zur Fehlervermeidung beide Teile der Zei-

chenkette automatisch durch Anfuumlhrungszeichen begrenzt und durch den

Verkettungsoperator + (siehe Abschnitt 224) miteinander verbunden

4493book Seite 30 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

31

115 Arbeiten mit Steuerelementen

151 Steuerelemente formatieren

HilfslinienZur besseren Anordnung der Steuerelemente auf dem Formular koumlnnen

Sie sie mithilfe der Maus nach Augenmaszlig verschieben Dabei erscheinen

automatisch Hilfslinien falls das aktuelle Element horizontal oder vertikal

parallel zu einem anderen Element steht

Mehrere Steuerele-

mente markieren

Weitere Moumlglichkeiten bieten die Menuumlpunkte im Menuuml Format In vie-

len Faumlllen muumlssen vorher mehrere Steuerelemente auf einmal markiert

werden (siehe Abbildung 114)

Abbildung 114 Mehrere markierte Elemente

Das geschieht entweder

durch Umrahmung der Elemente mit einem Rechteck nachdem Sie zu-

vor das Steuerelement Zeiger ausgewaumlhlt haben oder

durch Mehrfachauswahl indem Sie ab dem zweiten auszuwaumlhlenden

Steuerelement die (ordf)-Taste (wie fuumlr Groszligbuchstaben) oder die (Strg)-

Taste gedruumlckt halten

Menuuml raquoFormatlaquoUumlber das Menuuml Format haben Sie anschlieszligend folgende Moumlglichkeiten

zur Anpassung der Steuerelemente

Die ausgewaumlhlten Steuerelemente koumlnnen horizontal oder vertikal zu-

einander ausgerichtet werden (Menuuml Format bull Ausrichten)

Auch die horizontalen undoder vertikalen Dimensionen der ausge-

waumlhlten Steuerelemente koumlnnen angeglichen werden (Menuuml Format bull

Groumlsse angleichen)

4493book Seite 31 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

32

Einheitliche

Abstaumlnde

Zudem koumlnnen die horizontalen und vertikalen Abstaumlnde zwischen den

ausgewaumlhlten Steuerelementen angeglichen vergroumlszligert verkleinert

oder entfernt werden (Menuuml Format bull Horizontaler AbstandVer-

tikaler Abstand)

Die Steuerelemente koumlnnen auszligerdem horizontal oder vertikal inner-

halb des Formulars zentriert werden (Menuuml Format bull auf Formular

zentrieren)

Sollten sich die Steuerelemente teilweise uumlberlappen koumlnnen Sie einzel-

ne Steuerelemente in den Vorder- bzw Hintergrund schieben (Menuuml

Format bull Reihenfolge)

Sie koumlnnen alle Steuerelemente gleichzeitig gegen versehentliches Ver-

schieben absichern (Menuuml Format bull Steuerelemente Sperren) Diese

Sperrung gilt nur waumlhrend der Entwicklung des Programms

Abbildung 115 zeigt ein Formular mit drei Buttons die alle linksbuumlndig aus-

gerichtet sind und den gleichen vertikalen Abstand voneinander haben

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 markieren Sie darin

mehrere Steuerelemente und testen Sie anschlieszligend die einzelnen Moumlg-

lichkeiten des Format-Menuumls aus

Abbildung 115 Nach der Formatierung

152 Steuerelemente kopieren

Steuerelemente

kopieren

Zur schnelleren Erzeugung eines Projekts koumlnnen vorhandene Steuerele-

mente einschlieszliglich aller ihrer Eigenschaften kopiert werden Markieren

Sie hierzu die gewuumlnschten Steuerelemente und kopieren Sie sie entweder

4493book Seite 32 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

33

1 uumlber das Menuuml Bearbeiten bull Kopieren und das Menuuml Bearbeiten bull

Einfuumlgen oder

mit den Tastenkombinationen (Strg) + (C) und (Strg) + (V)

Anschlieszligend sollten Sie die neu erzeugten Steuerelemente direkt umbe-

nennen und an den gewuumlnschten Positionen anordnen

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 und kopieren Sie einzel-

ne Steuerelemente Kontrollieren Sie anschlieszligend die Liste der vorhan-

denen Steuerelemente im Eigenschaften-Fenster auf eine einheitliche

Namensgebung

153 Eigenschaften zur Laufzeit aumlndern

Size LocationSteuerelemente haben die Eigenschaften Size (mit den Komponenten

Width und Height) und Location (mit den Komponenten X und Y) zur Anga-

be von Groumlszlige und Position X und Y geben die Koordinaten der oberen lin-

ken Ecke des Steuerelements an gemessen von der oberen linken Ecke des

umgebenden Elements (meist das Formular) Saumlmtliche Werte werden in

Pixeln angegeben

Alle diese Eigenschaften koumlnnen sowohl waumlhrend der Entwicklungszeit als

auch waumlhrend der Laufzeit eines Projekts veraumlndert werden Zur Aumlnderung

waumlhrend der Entwicklungszeit koumlnnen Sie die Eigenschaftswerte wie ge-

wohnt im Eigenschaften-Fenster eingeben Als Beispiel fuumlr Aumlnderungen

waumlhrend der Laufzeit soll hingegen das folgende Programm (Projekt

Steuerelemente) dienen (siehe Abbildung 116)

Abbildung 116 Position und Groumlszlige bestimmen

4493book Seite 33 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

34

Zunaumlchst ein Hinweis zu den benoumltigten Namensraumlumen die oberhalb der

Klasse eingebunden werden

using Systemusing SystemDrawingusing SystemWindowsForms

Listing 15 Projekt raquoSteuerelementelaquo Namensraumlume

Gegenuumlber dem vorherigen Projekt ist noch der Namensraum SystemDra-

wing hinzugekommen der beim Zugriff auf Positions- Groumlszligen- oder Farb-

angaben benoumltigt wird Die drei genannten Namensraumlume reichen bei vie-

len Projekten aus

Es wird nachfolgend generell nur der Teil des Programmcodes angezeigt

der veraumlndert wurde

private void CmdPositionRel_Click()

CmdTestLocation = new Point(CmdTestLocationX + 20 CmdTestLocationY)

private void CmdPositionAbs_Click()

CmdTestLocation = new Point(100 200)private void CmdGroesseRel_Click()

CmdTestSize = new Size(CmdTestSizeWidth + 20 CmdTestSizeHeight)

private void CmdGroesseAbs_Click()

CmdTestSize = new Size(50 100)

Listing 16 Projekt raquoSteuerelementelaquo

4493book Seite 34 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

35

1Zur Erlaumluterung

Verkuumlrzte

Darstellung

Der Kopfteil der einzelnen Methoden wird aus Gruumlnden der Uumlbersicht-

lichkeit jeweils in verkuumlrzter Form abgebildet Das wird bei den meisten

nachfolgenden Beispielen ebenfalls so sein auszliger wenn es genau auf die

Inhalte des Methodenkopfs ankommt

Das Formular enthaumllt fuumlnf Buttons Die oberen vier Buttons dienen der

Veraumlnderung von Position und Groumlszlige des fuumlnften Buttons

Die Position eines Elements kann relativ zur aktuellen Position oder auf

absolute Werte eingestellt werden Das Gleiche gilt fuumlr die Groumlszlige eines

Elements

Bei beiden Angaben handelt es sich um Wertepaare (XY bzw Breite

Houmlhe)

new Point 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 bereitzu-

stellen

X Y Bei Betaumltigung des Buttons Position Abs wird die Position des fuumlnften

Buttons auf die Werte X=100 und Y=200 gestellt jeweils gemessen von der

linken oberen Ecke des Formulars

Bei Betaumltigung des Buttons Position Rel wird die Position des fuumlnften

Buttons auf die Werte X = CmdTestLocationX + 20 und Y = CmdTestLoca-

tionY gestellt Bei X wird also der alte Wert der Komponente X um 20 er-

houmlht das Element bewegt sich nach rechts Bei Y wird der alte Wert der

Komponente Y nicht veraumlndert das Element bewegt sich somit nicht

nach oben oder unten

Size Zur Einstellung der Groumlszlige dient die Struktur Size

Width Height Bei Betaumltigung des Buttons Groumlsse Abs wird die Groumlszlige des fuumlnften But-

tons auf die Werte Width = 50 und Height = 100 gestellt

Bei Betaumltigung des Buttons Groumlsse Rel wird die Groumlszlige des fuumlnften

Buttons auf die Werte Width = CmdTestSizeWidth + 20 und Height = Cmd-

TestSizeHeight gestellt Bei Width wird also der alte Wert der Kompo-

nente Width um 20 erhoumlht das Element wird breiter Bei Height wird der

fruumlhere Wert der Komponente Height nicht veraumlndert das Element ver-

aumlndert seine Houmlhe daher nicht

Nach einigen Klicks sieht das Formular aus wie das in Abbildung 117

4493book Seite 35 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

36

Abbildung 117 Veraumlnderung von Eigenschaften zur Laufzeit

154 Vergabe und Verwendung von Namen

Beachten Sie in allen Programmen dass jedes Steuerelement seinen eige-

nen eindeutigen Namen hat und immer mit diesem Namen angesprochen

werden muss Besonders am Anfang passiert es erfahrungsgemaumlszlig haumlufig

dass ein Programm nur deshalb nicht zum gewuumlnschten Erfolg fuumlhrt weil

ein nicht vorhandener Name verwendet wird In diesem Zusammenhang

moumlchte ich noch einmal auf die Namenskonventionen hinweisen

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 uumlber Typ und Funktion

des Steuerelements Falls Sie beim Schreiben von Programmcode anschlie-

szligend diese Namen z B vollstaumlndig in Kleinbuchstaben eingeben werden

Sie nach Verlassen der Zeile darauf aufmerksam gemacht Sie koumlnnen so

schnell erkennen ob Sie tatsaumlchlich ein vorhandenes Steuerelement ver-

wendet haben

155 Verknuumlpfung von Texten mehrzeilige Texte

+ zur Verkettung Mithilfe des Zeichens + koumlnnen mehrere Texte miteinander verknuumlpft wer-

den Falls ein einzelner Zahlenwert zwischen den Texten steht wird er vor-

her in einen Text umgewandelt Aufgepasst Falls mehrere Zahlenwerte

direkt nacheinander mithilfe des Zeichens + verknuumlpft werden werden sie

zunaumlchst mathematisch addiert

4493book Seite 36 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

37

1nFalls Sie eine mehrzeilige Ausgabe wuumlnschen koumlnnen Sie einen Zeilenvor-

schub mithilfe der Zeichenfolge n (fuumlr new line) erzeugen

Nachfolgend wird das Formular des Projekts Steuerelemente vergroumlszligert

zum Beispiel auf 500 times 400 Anschlieszligend wird es um ein Label ergaumlnzt in

dem die aktuelle Position und Groumlszlige des Buttons angezeigt werden Das

soll nach Betaumltigung des Buttons Anzeige geschehen

private void CmdAnzeige_Click()

LblAnzeigeText = Position X + CmdTestLocationX + Y + CmdTestLocationY + n + Groumlszlige Breite +CmdTestSizeWidth + Houmlhe + CmdTestSizeHeight

Listing 17 Projekt raquoSteuerelementelaquo mit Anzeige

Nach einigen Klicks und der Betaumltigung des Buttons Anzeige sieht das For-

mular aus wie das in Abbildung 118

Abbildung 118 Anzeige der Eigenschaften

156 Eigenschaft BackColor Farben allgemein

BackColorDie Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-

Color festgelegt Dabei koumlnnen Sie die Farbe zur Entwicklungszeit leicht

mithilfe einer Farbpalette oder aus Systemfarben auswaumlhlen

ColorHintergrundfarben und andere Farben koumlnnen Sie auch zur Laufzeit ein-

stellen Dabei bedienen Sie sich der Farbwerte die Sie uumlber die Struktur Co-

lor auswaumlhlen

Ein Beispiel ebenfalls im Projekt Steuerelemente

4493book Seite 37 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

38

private void CmdFarbe_Click()

BackColor = ColorYellowLblAnzeigeBackColor = ColorFromArgb(192 255 0)

Listing 18 Projekt raquoSteuerelementelaquo mit Farben

Zur Erlaumluterung

Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften z B

Yellow Der Wert kann der Eigenschaft BackColor des Steuerelements zu-

gewiesen werden hier aber handelt es sich um das Formular selbst

FromArgb() Auszligerdem bietet die Struktur die Methode FromArgb() Diese koumlnnen Sie

auf verschiedene Arten aufrufen Eine dieser Arten erwartet genau drei

Parameter naumlmlich die Werte fuumlr Rot Gruumln und Blau jeweils zwischen 0

und 255

Das Formular sieht nach der Aumlnderung der Eigenschaft Farbe aus wie das in

Abbildung 119

Abbildung 119 Nach Aumlnderung der Eigenschaft raquoFarbelaquo

4493book Seite 38 Mittwoch 8 Maumlrz 2017 112 13

39

2

Kapitel 2

Grundlagen

In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-

lagen von C in Verbindung mit den gaumlngigen Steuerelementen von

Windows-Programmen

In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

mierung wie Variablen Operatoren Verzweigungen und Schleifen gemein-

sam mit wohlbekannten haumlufig verwendeten Steuerelementen kennen

21 Variablen und Datentypen

Variablen dienen der voruumlbergehenden Speicherung von Daten die sich

waumlhrend der Laufzeit eines Programms aumlndern koumlnnen Eine Variable be-

sitzt einen eindeutigen Namen unter dem sie angesprochen werden kann

211 Namen Werte

NamensregelnFuumlr die Namen von Variablen gelten in C die folgenden Regeln

Sie beginnen mit einem Buchstaben

Sie koumlnnen nur aus Buchstaben Zahlen und einigen wenigen Sonderzei-

chen (wie z B dem Unterstrich _) bestehen

Sie duumlrfen Umlaute oder auch das scharfe szlig enthalten Allerdings kann

das zu Fehlern im Einsatz unter anderssprachigen Umgebungen fuumlhren

Daher rate ich davon ab

Innerhalb eines Guumlltigkeitsbereichs darf es keine zwei Variablen mit

dem gleichen Namen geben (siehe Abschnitt 214)

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

4493book Seite 39 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

1 Einfuumlhrung

32

Einheitliche

Abstaumlnde

Zudem koumlnnen die horizontalen und vertikalen Abstaumlnde zwischen den

ausgewaumlhlten Steuerelementen angeglichen vergroumlszligert verkleinert

oder entfernt werden (Menuuml Format bull Horizontaler AbstandVer-

tikaler Abstand)

Die Steuerelemente koumlnnen auszligerdem horizontal oder vertikal inner-

halb des Formulars zentriert werden (Menuuml Format bull auf Formular

zentrieren)

Sollten sich die Steuerelemente teilweise uumlberlappen koumlnnen Sie einzel-

ne Steuerelemente in den Vorder- bzw Hintergrund schieben (Menuuml

Format bull Reihenfolge)

Sie koumlnnen alle Steuerelemente gleichzeitig gegen versehentliches Ver-

schieben absichern (Menuuml Format bull Steuerelemente Sperren) Diese

Sperrung gilt nur waumlhrend der Entwicklung des Programms

Abbildung 115 zeigt ein Formular mit drei Buttons die alle linksbuumlndig aus-

gerichtet sind und den gleichen vertikalen Abstand voneinander haben

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 markieren Sie darin

mehrere Steuerelemente und testen Sie anschlieszligend die einzelnen Moumlg-

lichkeiten des Format-Menuumls aus

Abbildung 115 Nach der Formatierung

152 Steuerelemente kopieren

Steuerelemente

kopieren

Zur schnelleren Erzeugung eines Projekts koumlnnen vorhandene Steuerele-

mente einschlieszliglich aller ihrer Eigenschaften kopiert werden Markieren

Sie hierzu die gewuumlnschten Steuerelemente und kopieren Sie sie entweder

4493book Seite 32 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

33

1 uumlber das Menuuml Bearbeiten bull Kopieren und das Menuuml Bearbeiten bull

Einfuumlgen oder

mit den Tastenkombinationen (Strg) + (C) und (Strg) + (V)

Anschlieszligend sollten Sie die neu erzeugten Steuerelemente direkt umbe-

nennen und an den gewuumlnschten Positionen anordnen

Uumlbung

Laden Sie das Projekt MeinErstes aus Abschnitt 13 und kopieren Sie einzel-

ne Steuerelemente Kontrollieren Sie anschlieszligend die Liste der vorhan-

denen Steuerelemente im Eigenschaften-Fenster auf eine einheitliche

Namensgebung

153 Eigenschaften zur Laufzeit aumlndern

Size LocationSteuerelemente haben die Eigenschaften Size (mit den Komponenten

Width und Height) und Location (mit den Komponenten X und Y) zur Anga-

be von Groumlszlige und Position X und Y geben die Koordinaten der oberen lin-

ken Ecke des Steuerelements an gemessen von der oberen linken Ecke des

umgebenden Elements (meist das Formular) Saumlmtliche Werte werden in

Pixeln angegeben

Alle diese Eigenschaften koumlnnen sowohl waumlhrend der Entwicklungszeit als

auch waumlhrend der Laufzeit eines Projekts veraumlndert werden Zur Aumlnderung

waumlhrend der Entwicklungszeit koumlnnen Sie die Eigenschaftswerte wie ge-

wohnt im Eigenschaften-Fenster eingeben Als Beispiel fuumlr Aumlnderungen

waumlhrend der Laufzeit soll hingegen das folgende Programm (Projekt

Steuerelemente) dienen (siehe Abbildung 116)

Abbildung 116 Position und Groumlszlige bestimmen

4493book Seite 33 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

34

Zunaumlchst ein Hinweis zu den benoumltigten Namensraumlumen die oberhalb der

Klasse eingebunden werden

using Systemusing SystemDrawingusing SystemWindowsForms

Listing 15 Projekt raquoSteuerelementelaquo Namensraumlume

Gegenuumlber dem vorherigen Projekt ist noch der Namensraum SystemDra-

wing hinzugekommen der beim Zugriff auf Positions- Groumlszligen- oder Farb-

angaben benoumltigt wird Die drei genannten Namensraumlume reichen bei vie-

len Projekten aus

Es wird nachfolgend generell nur der Teil des Programmcodes angezeigt

der veraumlndert wurde

private void CmdPositionRel_Click()

CmdTestLocation = new Point(CmdTestLocationX + 20 CmdTestLocationY)

private void CmdPositionAbs_Click()

CmdTestLocation = new Point(100 200)private void CmdGroesseRel_Click()

CmdTestSize = new Size(CmdTestSizeWidth + 20 CmdTestSizeHeight)

private void CmdGroesseAbs_Click()

CmdTestSize = new Size(50 100)

Listing 16 Projekt raquoSteuerelementelaquo

4493book Seite 34 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

35

1Zur Erlaumluterung

Verkuumlrzte

Darstellung

Der Kopfteil der einzelnen Methoden wird aus Gruumlnden der Uumlbersicht-

lichkeit jeweils in verkuumlrzter Form abgebildet Das wird bei den meisten

nachfolgenden Beispielen ebenfalls so sein auszliger wenn es genau auf die

Inhalte des Methodenkopfs ankommt

Das Formular enthaumllt fuumlnf Buttons Die oberen vier Buttons dienen der

Veraumlnderung von Position und Groumlszlige des fuumlnften Buttons

Die Position eines Elements kann relativ zur aktuellen Position oder auf

absolute Werte eingestellt werden Das Gleiche gilt fuumlr die Groumlszlige eines

Elements

Bei beiden Angaben handelt es sich um Wertepaare (XY bzw Breite

Houmlhe)

new Point 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 bereitzu-

stellen

X Y Bei Betaumltigung des Buttons Position Abs wird die Position des fuumlnften

Buttons auf die Werte X=100 und Y=200 gestellt jeweils gemessen von der

linken oberen Ecke des Formulars

Bei Betaumltigung des Buttons Position Rel wird die Position des fuumlnften

Buttons auf die Werte X = CmdTestLocationX + 20 und Y = CmdTestLoca-

tionY gestellt Bei X wird also der alte Wert der Komponente X um 20 er-

houmlht das Element bewegt sich nach rechts Bei Y wird der alte Wert der

Komponente Y nicht veraumlndert das Element bewegt sich somit nicht

nach oben oder unten

Size Zur Einstellung der Groumlszlige dient die Struktur Size

Width Height Bei Betaumltigung des Buttons Groumlsse Abs wird die Groumlszlige des fuumlnften But-

tons auf die Werte Width = 50 und Height = 100 gestellt

Bei Betaumltigung des Buttons Groumlsse Rel wird die Groumlszlige des fuumlnften

Buttons auf die Werte Width = CmdTestSizeWidth + 20 und Height = Cmd-

TestSizeHeight gestellt Bei Width wird also der alte Wert der Kompo-

nente Width um 20 erhoumlht das Element wird breiter Bei Height wird der

fruumlhere Wert der Komponente Height nicht veraumlndert das Element ver-

aumlndert seine Houmlhe daher nicht

Nach einigen Klicks sieht das Formular aus wie das in Abbildung 117

4493book Seite 35 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

36

Abbildung 117 Veraumlnderung von Eigenschaften zur Laufzeit

154 Vergabe und Verwendung von Namen

Beachten Sie in allen Programmen dass jedes Steuerelement seinen eige-

nen eindeutigen Namen hat und immer mit diesem Namen angesprochen

werden muss Besonders am Anfang passiert es erfahrungsgemaumlszlig haumlufig

dass ein Programm nur deshalb nicht zum gewuumlnschten Erfolg fuumlhrt weil

ein nicht vorhandener Name verwendet wird In diesem Zusammenhang

moumlchte ich noch einmal auf die Namenskonventionen hinweisen

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 uumlber Typ und Funktion

des Steuerelements Falls Sie beim Schreiben von Programmcode anschlie-

szligend diese Namen z B vollstaumlndig in Kleinbuchstaben eingeben werden

Sie nach Verlassen der Zeile darauf aufmerksam gemacht Sie koumlnnen so

schnell erkennen ob Sie tatsaumlchlich ein vorhandenes Steuerelement ver-

wendet haben

155 Verknuumlpfung von Texten mehrzeilige Texte

+ zur Verkettung Mithilfe des Zeichens + koumlnnen mehrere Texte miteinander verknuumlpft wer-

den Falls ein einzelner Zahlenwert zwischen den Texten steht wird er vor-

her in einen Text umgewandelt Aufgepasst Falls mehrere Zahlenwerte

direkt nacheinander mithilfe des Zeichens + verknuumlpft werden werden sie

zunaumlchst mathematisch addiert

4493book Seite 36 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

37

1nFalls Sie eine mehrzeilige Ausgabe wuumlnschen koumlnnen Sie einen Zeilenvor-

schub mithilfe der Zeichenfolge n (fuumlr new line) erzeugen

Nachfolgend wird das Formular des Projekts Steuerelemente vergroumlszligert

zum Beispiel auf 500 times 400 Anschlieszligend wird es um ein Label ergaumlnzt in

dem die aktuelle Position und Groumlszlige des Buttons angezeigt werden Das

soll nach Betaumltigung des Buttons Anzeige geschehen

private void CmdAnzeige_Click()

LblAnzeigeText = Position X + CmdTestLocationX + Y + CmdTestLocationY + n + Groumlszlige Breite +CmdTestSizeWidth + Houmlhe + CmdTestSizeHeight

Listing 17 Projekt raquoSteuerelementelaquo mit Anzeige

Nach einigen Klicks und der Betaumltigung des Buttons Anzeige sieht das For-

mular aus wie das in Abbildung 118

Abbildung 118 Anzeige der Eigenschaften

156 Eigenschaft BackColor Farben allgemein

BackColorDie Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-

Color festgelegt Dabei koumlnnen Sie die Farbe zur Entwicklungszeit leicht

mithilfe einer Farbpalette oder aus Systemfarben auswaumlhlen

ColorHintergrundfarben und andere Farben koumlnnen Sie auch zur Laufzeit ein-

stellen Dabei bedienen Sie sich der Farbwerte die Sie uumlber die Struktur Co-

lor auswaumlhlen

Ein Beispiel ebenfalls im Projekt Steuerelemente

4493book Seite 37 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

38

private void CmdFarbe_Click()

BackColor = ColorYellowLblAnzeigeBackColor = ColorFromArgb(192 255 0)

Listing 18 Projekt raquoSteuerelementelaquo mit Farben

Zur Erlaumluterung

Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften z B

Yellow Der Wert kann der Eigenschaft BackColor des Steuerelements zu-

gewiesen werden hier aber handelt es sich um das Formular selbst

FromArgb() Auszligerdem bietet die Struktur die Methode FromArgb() Diese koumlnnen Sie

auf verschiedene Arten aufrufen Eine dieser Arten erwartet genau drei

Parameter naumlmlich die Werte fuumlr Rot Gruumln und Blau jeweils zwischen 0

und 255

Das Formular sieht nach der Aumlnderung der Eigenschaft Farbe aus wie das in

Abbildung 119

Abbildung 119 Nach Aumlnderung der Eigenschaft raquoFarbelaquo

4493book Seite 38 Mittwoch 8 Maumlrz 2017 112 13

39

2

Kapitel 2

Grundlagen

In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-

lagen von C in Verbindung mit den gaumlngigen Steuerelementen von

Windows-Programmen

In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

mierung wie Variablen Operatoren Verzweigungen und Schleifen gemein-

sam mit wohlbekannten haumlufig verwendeten Steuerelementen kennen

21 Variablen und Datentypen

Variablen dienen der voruumlbergehenden Speicherung von Daten die sich

waumlhrend der Laufzeit eines Programms aumlndern koumlnnen Eine Variable be-

sitzt einen eindeutigen Namen unter dem sie angesprochen werden kann

211 Namen Werte

NamensregelnFuumlr die Namen von Variablen gelten in C die folgenden Regeln

Sie beginnen mit einem Buchstaben

Sie koumlnnen nur aus Buchstaben Zahlen und einigen wenigen Sonderzei-

chen (wie z B dem Unterstrich _) bestehen

Sie duumlrfen Umlaute oder auch das scharfe szlig enthalten Allerdings kann

das zu Fehlern im Einsatz unter anderssprachigen Umgebungen fuumlhren

Daher rate ich davon ab

Innerhalb eines Guumlltigkeitsbereichs darf es keine zwei Variablen mit

dem gleichen Namen geben (siehe Abschnitt 214)

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

4493book Seite 39 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

1 Einfuumlhrung

34

Zunaumlchst ein Hinweis zu den benoumltigten Namensraumlumen die oberhalb der

Klasse eingebunden werden

using Systemusing SystemDrawingusing SystemWindowsForms

Listing 15 Projekt raquoSteuerelementelaquo Namensraumlume

Gegenuumlber dem vorherigen Projekt ist noch der Namensraum SystemDra-

wing hinzugekommen der beim Zugriff auf Positions- Groumlszligen- oder Farb-

angaben benoumltigt wird Die drei genannten Namensraumlume reichen bei vie-

len Projekten aus

Es wird nachfolgend generell nur der Teil des Programmcodes angezeigt

der veraumlndert wurde

private void CmdPositionRel_Click()

CmdTestLocation = new Point(CmdTestLocationX + 20 CmdTestLocationY)

private void CmdPositionAbs_Click()

CmdTestLocation = new Point(100 200)private void CmdGroesseRel_Click()

CmdTestSize = new Size(CmdTestSizeWidth + 20 CmdTestSizeHeight)

private void CmdGroesseAbs_Click()

CmdTestSize = new Size(50 100)

Listing 16 Projekt raquoSteuerelementelaquo

4493book Seite 34 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

35

1Zur Erlaumluterung

Verkuumlrzte

Darstellung

Der Kopfteil der einzelnen Methoden wird aus Gruumlnden der Uumlbersicht-

lichkeit jeweils in verkuumlrzter Form abgebildet Das wird bei den meisten

nachfolgenden Beispielen ebenfalls so sein auszliger wenn es genau auf die

Inhalte des Methodenkopfs ankommt

Das Formular enthaumllt fuumlnf Buttons Die oberen vier Buttons dienen der

Veraumlnderung von Position und Groumlszlige des fuumlnften Buttons

Die Position eines Elements kann relativ zur aktuellen Position oder auf

absolute Werte eingestellt werden Das Gleiche gilt fuumlr die Groumlszlige eines

Elements

Bei beiden Angaben handelt es sich um Wertepaare (XY bzw Breite

Houmlhe)

new Point 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 bereitzu-

stellen

X Y Bei Betaumltigung des Buttons Position Abs wird die Position des fuumlnften

Buttons auf die Werte X=100 und Y=200 gestellt jeweils gemessen von der

linken oberen Ecke des Formulars

Bei Betaumltigung des Buttons Position Rel wird die Position des fuumlnften

Buttons auf die Werte X = CmdTestLocationX + 20 und Y = CmdTestLoca-

tionY gestellt Bei X wird also der alte Wert der Komponente X um 20 er-

houmlht das Element bewegt sich nach rechts Bei Y wird der alte Wert der

Komponente Y nicht veraumlndert das Element bewegt sich somit nicht

nach oben oder unten

Size Zur Einstellung der Groumlszlige dient die Struktur Size

Width Height Bei Betaumltigung des Buttons Groumlsse Abs wird die Groumlszlige des fuumlnften But-

tons auf die Werte Width = 50 und Height = 100 gestellt

Bei Betaumltigung des Buttons Groumlsse Rel wird die Groumlszlige des fuumlnften

Buttons auf die Werte Width = CmdTestSizeWidth + 20 und Height = Cmd-

TestSizeHeight gestellt Bei Width wird also der alte Wert der Kompo-

nente Width um 20 erhoumlht das Element wird breiter Bei Height wird der

fruumlhere Wert der Komponente Height nicht veraumlndert das Element ver-

aumlndert seine Houmlhe daher nicht

Nach einigen Klicks sieht das Formular aus wie das in Abbildung 117

4493book Seite 35 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

36

Abbildung 117 Veraumlnderung von Eigenschaften zur Laufzeit

154 Vergabe und Verwendung von Namen

Beachten Sie in allen Programmen dass jedes Steuerelement seinen eige-

nen eindeutigen Namen hat und immer mit diesem Namen angesprochen

werden muss Besonders am Anfang passiert es erfahrungsgemaumlszlig haumlufig

dass ein Programm nur deshalb nicht zum gewuumlnschten Erfolg fuumlhrt weil

ein nicht vorhandener Name verwendet wird In diesem Zusammenhang

moumlchte ich noch einmal auf die Namenskonventionen hinweisen

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 uumlber Typ und Funktion

des Steuerelements Falls Sie beim Schreiben von Programmcode anschlie-

szligend diese Namen z B vollstaumlndig in Kleinbuchstaben eingeben werden

Sie nach Verlassen der Zeile darauf aufmerksam gemacht Sie koumlnnen so

schnell erkennen ob Sie tatsaumlchlich ein vorhandenes Steuerelement ver-

wendet haben

155 Verknuumlpfung von Texten mehrzeilige Texte

+ zur Verkettung Mithilfe des Zeichens + koumlnnen mehrere Texte miteinander verknuumlpft wer-

den Falls ein einzelner Zahlenwert zwischen den Texten steht wird er vor-

her in einen Text umgewandelt Aufgepasst Falls mehrere Zahlenwerte

direkt nacheinander mithilfe des Zeichens + verknuumlpft werden werden sie

zunaumlchst mathematisch addiert

4493book Seite 36 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

37

1nFalls Sie eine mehrzeilige Ausgabe wuumlnschen koumlnnen Sie einen Zeilenvor-

schub mithilfe der Zeichenfolge n (fuumlr new line) erzeugen

Nachfolgend wird das Formular des Projekts Steuerelemente vergroumlszligert

zum Beispiel auf 500 times 400 Anschlieszligend wird es um ein Label ergaumlnzt in

dem die aktuelle Position und Groumlszlige des Buttons angezeigt werden Das

soll nach Betaumltigung des Buttons Anzeige geschehen

private void CmdAnzeige_Click()

LblAnzeigeText = Position X + CmdTestLocationX + Y + CmdTestLocationY + n + Groumlszlige Breite +CmdTestSizeWidth + Houmlhe + CmdTestSizeHeight

Listing 17 Projekt raquoSteuerelementelaquo mit Anzeige

Nach einigen Klicks und der Betaumltigung des Buttons Anzeige sieht das For-

mular aus wie das in Abbildung 118

Abbildung 118 Anzeige der Eigenschaften

156 Eigenschaft BackColor Farben allgemein

BackColorDie Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-

Color festgelegt Dabei koumlnnen Sie die Farbe zur Entwicklungszeit leicht

mithilfe einer Farbpalette oder aus Systemfarben auswaumlhlen

ColorHintergrundfarben und andere Farben koumlnnen Sie auch zur Laufzeit ein-

stellen Dabei bedienen Sie sich der Farbwerte die Sie uumlber die Struktur Co-

lor auswaumlhlen

Ein Beispiel ebenfalls im Projekt Steuerelemente

4493book Seite 37 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

38

private void CmdFarbe_Click()

BackColor = ColorYellowLblAnzeigeBackColor = ColorFromArgb(192 255 0)

Listing 18 Projekt raquoSteuerelementelaquo mit Farben

Zur Erlaumluterung

Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften z B

Yellow Der Wert kann der Eigenschaft BackColor des Steuerelements zu-

gewiesen werden hier aber handelt es sich um das Formular selbst

FromArgb() Auszligerdem bietet die Struktur die Methode FromArgb() Diese koumlnnen Sie

auf verschiedene Arten aufrufen Eine dieser Arten erwartet genau drei

Parameter naumlmlich die Werte fuumlr Rot Gruumln und Blau jeweils zwischen 0

und 255

Das Formular sieht nach der Aumlnderung der Eigenschaft Farbe aus wie das in

Abbildung 119

Abbildung 119 Nach Aumlnderung der Eigenschaft raquoFarbelaquo

4493book Seite 38 Mittwoch 8 Maumlrz 2017 112 13

39

2

Kapitel 2

Grundlagen

In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-

lagen von C in Verbindung mit den gaumlngigen Steuerelementen von

Windows-Programmen

In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

mierung wie Variablen Operatoren Verzweigungen und Schleifen gemein-

sam mit wohlbekannten haumlufig verwendeten Steuerelementen kennen

21 Variablen und Datentypen

Variablen dienen der voruumlbergehenden Speicherung von Daten die sich

waumlhrend der Laufzeit eines Programms aumlndern koumlnnen Eine Variable be-

sitzt einen eindeutigen Namen unter dem sie angesprochen werden kann

211 Namen Werte

NamensregelnFuumlr die Namen von Variablen gelten in C die folgenden Regeln

Sie beginnen mit einem Buchstaben

Sie koumlnnen nur aus Buchstaben Zahlen und einigen wenigen Sonderzei-

chen (wie z B dem Unterstrich _) bestehen

Sie duumlrfen Umlaute oder auch das scharfe szlig enthalten Allerdings kann

das zu Fehlern im Einsatz unter anderssprachigen Umgebungen fuumlhren

Daher rate ich davon ab

Innerhalb eines Guumlltigkeitsbereichs darf es keine zwei Variablen mit

dem gleichen Namen geben (siehe Abschnitt 214)

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

4493book Seite 39 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

1 Einfuumlhrung

36

Abbildung 117 Veraumlnderung von Eigenschaften zur Laufzeit

154 Vergabe und Verwendung von Namen

Beachten Sie in allen Programmen dass jedes Steuerelement seinen eige-

nen eindeutigen Namen hat und immer mit diesem Namen angesprochen

werden muss Besonders am Anfang passiert es erfahrungsgemaumlszlig haumlufig

dass ein Programm nur deshalb nicht zum gewuumlnschten Erfolg fuumlhrt weil

ein nicht vorhandener Name verwendet wird In diesem Zusammenhang

moumlchte ich noch einmal auf die Namenskonventionen hinweisen

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 uumlber Typ und Funktion

des Steuerelements Falls Sie beim Schreiben von Programmcode anschlie-

szligend diese Namen z B vollstaumlndig in Kleinbuchstaben eingeben werden

Sie nach Verlassen der Zeile darauf aufmerksam gemacht Sie koumlnnen so

schnell erkennen ob Sie tatsaumlchlich ein vorhandenes Steuerelement ver-

wendet haben

155 Verknuumlpfung von Texten mehrzeilige Texte

+ zur Verkettung Mithilfe des Zeichens + koumlnnen mehrere Texte miteinander verknuumlpft wer-

den Falls ein einzelner Zahlenwert zwischen den Texten steht wird er vor-

her in einen Text umgewandelt Aufgepasst Falls mehrere Zahlenwerte

direkt nacheinander mithilfe des Zeichens + verknuumlpft werden werden sie

zunaumlchst mathematisch addiert

4493book Seite 36 Mittwoch 8 Maumlrz 2017 112 13

15 Arbeiten mit Steuerelementen

37

1nFalls Sie eine mehrzeilige Ausgabe wuumlnschen koumlnnen Sie einen Zeilenvor-

schub mithilfe der Zeichenfolge n (fuumlr new line) erzeugen

Nachfolgend wird das Formular des Projekts Steuerelemente vergroumlszligert

zum Beispiel auf 500 times 400 Anschlieszligend wird es um ein Label ergaumlnzt in

dem die aktuelle Position und Groumlszlige des Buttons angezeigt werden Das

soll nach Betaumltigung des Buttons Anzeige geschehen

private void CmdAnzeige_Click()

LblAnzeigeText = Position X + CmdTestLocationX + Y + CmdTestLocationY + n + Groumlszlige Breite +CmdTestSizeWidth + Houmlhe + CmdTestSizeHeight

Listing 17 Projekt raquoSteuerelementelaquo mit Anzeige

Nach einigen Klicks und der Betaumltigung des Buttons Anzeige sieht das For-

mular aus wie das in Abbildung 118

Abbildung 118 Anzeige der Eigenschaften

156 Eigenschaft BackColor Farben allgemein

BackColorDie Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-

Color festgelegt Dabei koumlnnen Sie die Farbe zur Entwicklungszeit leicht

mithilfe einer Farbpalette oder aus Systemfarben auswaumlhlen

ColorHintergrundfarben und andere Farben koumlnnen Sie auch zur Laufzeit ein-

stellen Dabei bedienen Sie sich der Farbwerte die Sie uumlber die Struktur Co-

lor auswaumlhlen

Ein Beispiel ebenfalls im Projekt Steuerelemente

4493book Seite 37 Mittwoch 8 Maumlrz 2017 112 13

1 Einfuumlhrung

38

private void CmdFarbe_Click()

BackColor = ColorYellowLblAnzeigeBackColor = ColorFromArgb(192 255 0)

Listing 18 Projekt raquoSteuerelementelaquo mit Farben

Zur Erlaumluterung

Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften z B

Yellow Der Wert kann der Eigenschaft BackColor des Steuerelements zu-

gewiesen werden hier aber handelt es sich um das Formular selbst

FromArgb() Auszligerdem bietet die Struktur die Methode FromArgb() Diese koumlnnen Sie

auf verschiedene Arten aufrufen Eine dieser Arten erwartet genau drei

Parameter naumlmlich die Werte fuumlr Rot Gruumln und Blau jeweils zwischen 0

und 255

Das Formular sieht nach der Aumlnderung der Eigenschaft Farbe aus wie das in

Abbildung 119

Abbildung 119 Nach Aumlnderung der Eigenschaft raquoFarbelaquo

4493book Seite 38 Mittwoch 8 Maumlrz 2017 112 13

39

2

Kapitel 2

Grundlagen

In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-

lagen von C in Verbindung mit den gaumlngigen Steuerelementen von

Windows-Programmen

In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

mierung wie Variablen Operatoren Verzweigungen und Schleifen gemein-

sam mit wohlbekannten haumlufig verwendeten Steuerelementen kennen

21 Variablen und Datentypen

Variablen dienen der voruumlbergehenden Speicherung von Daten die sich

waumlhrend der Laufzeit eines Programms aumlndern koumlnnen Eine Variable be-

sitzt einen eindeutigen Namen unter dem sie angesprochen werden kann

211 Namen Werte

NamensregelnFuumlr die Namen von Variablen gelten in C die folgenden Regeln

Sie beginnen mit einem Buchstaben

Sie koumlnnen nur aus Buchstaben Zahlen und einigen wenigen Sonderzei-

chen (wie z B dem Unterstrich _) bestehen

Sie duumlrfen Umlaute oder auch das scharfe szlig enthalten Allerdings kann

das zu Fehlern im Einsatz unter anderssprachigen Umgebungen fuumlhren

Daher rate ich davon ab

Innerhalb eines Guumlltigkeitsbereichs darf es keine zwei Variablen mit

dem gleichen Namen geben (siehe Abschnitt 214)

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

4493book Seite 39 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

1 Einfuumlhrung

38

private void CmdFarbe_Click()

BackColor = ColorYellowLblAnzeigeBackColor = ColorFromArgb(192 255 0)

Listing 18 Projekt raquoSteuerelementelaquo mit Farben

Zur Erlaumluterung

Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften z B

Yellow Der Wert kann der Eigenschaft BackColor des Steuerelements zu-

gewiesen werden hier aber handelt es sich um das Formular selbst

FromArgb() Auszligerdem bietet die Struktur die Methode FromArgb() Diese koumlnnen Sie

auf verschiedene Arten aufrufen Eine dieser Arten erwartet genau drei

Parameter naumlmlich die Werte fuumlr Rot Gruumln und Blau jeweils zwischen 0

und 255

Das Formular sieht nach der Aumlnderung der Eigenschaft Farbe aus wie das in

Abbildung 119

Abbildung 119 Nach Aumlnderung der Eigenschaft raquoFarbelaquo

4493book Seite 38 Mittwoch 8 Maumlrz 2017 112 13

39

2

Kapitel 2

Grundlagen

In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-

lagen von C in Verbindung mit den gaumlngigen Steuerelementen von

Windows-Programmen

In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

mierung wie Variablen Operatoren Verzweigungen und Schleifen gemein-

sam mit wohlbekannten haumlufig verwendeten Steuerelementen kennen

21 Variablen und Datentypen

Variablen dienen der voruumlbergehenden Speicherung von Daten die sich

waumlhrend der Laufzeit eines Programms aumlndern koumlnnen Eine Variable be-

sitzt einen eindeutigen Namen unter dem sie angesprochen werden kann

211 Namen Werte

NamensregelnFuumlr die Namen von Variablen gelten in C die folgenden Regeln

Sie beginnen mit einem Buchstaben

Sie koumlnnen nur aus Buchstaben Zahlen und einigen wenigen Sonderzei-

chen (wie z B dem Unterstrich _) bestehen

Sie duumlrfen Umlaute oder auch das scharfe szlig enthalten Allerdings kann

das zu Fehlern im Einsatz unter anderssprachigen Umgebungen fuumlhren

Daher rate ich davon ab

Innerhalb eines Guumlltigkeitsbereichs darf es keine zwei Variablen mit

dem gleichen Namen geben (siehe Abschnitt 214)

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

4493book Seite 39 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

39

2

Kapitel 2

Grundlagen

In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-

lagen von C in Verbindung mit den gaumlngigen Steuerelementen von

Windows-Programmen

In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

mierung wie Variablen Operatoren Verzweigungen und Schleifen gemein-

sam mit wohlbekannten haumlufig verwendeten Steuerelementen kennen

21 Variablen und Datentypen

Variablen dienen der voruumlbergehenden Speicherung von Daten die sich

waumlhrend der Laufzeit eines Programms aumlndern koumlnnen Eine Variable be-

sitzt einen eindeutigen Namen unter dem sie angesprochen werden kann

211 Namen Werte

NamensregelnFuumlr die Namen von Variablen gelten in C die folgenden Regeln

Sie beginnen mit einem Buchstaben

Sie koumlnnen nur aus Buchstaben Zahlen und einigen wenigen Sonderzei-

chen (wie z B dem Unterstrich _) bestehen

Sie duumlrfen Umlaute oder auch das scharfe szlig enthalten Allerdings kann

das zu Fehlern im Einsatz unter anderssprachigen Umgebungen fuumlhren

Daher rate ich davon ab

Innerhalb eines Guumlltigkeitsbereichs darf es keine zwei Variablen mit

dem gleichen Namen geben (siehe Abschnitt 214)

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

4493book Seite 39 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

2 Grundlagen

40

212 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp der die Art der In-

formation bestimmt die gespeichert werden kann Der Entwickler waumlhlt

den Datentyp danach aus ob er Texte Zahlen ohne Nachkommastellen

Zahlen mit Nachkommastellen oder z B logische Werte speichern moumlchte

Auswahl des

Datentyps

Auszligerdem muss er sich noch Gedanken uumlber die Groumlszlige des Bereichs ma-

chen den die Zahl oder der Text annehmen koumlnnte und uumlber die ge-

wuumlnschte Genauigkeit bei Zahlen Im folgenden Abschnitt finden Sie eine

Liste der gaumlngigsten Datentypen

Variablen muumlssen in C immer mit einem Datentyp deklariert werden Das

beugt Fehlern vor die aufgrund einer falschen Verwendung der Variablen

entstehen koumlnnten

213 Datentypen

Die wichtigsten von C unterstuumltzten Datentypen koumlnnen in einige groszlige

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 ndash32768 bis 32767

int den Datentyp int mit Werten von ndash2147483648 bis 2147483647

und den Datentyp long mit Werten von ndash9223372036854775808 bis

9223372036854775807

Auszligerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

mastellen

den Datentyp float mit einfacher Genauigkeit und Werten

von ca ndash34times1038 bis ca 34times1038

double den Datentyp double mit doppelter Genauigkeit und Werten

von ca ndash17times10308 bis ca 17times10308

und den Datentyp decimal mit variabler Genauigkeit und Werten

von ca ndash79times1028 bis ca 79times1028

Einige weitere nuumltzliche Datentypen sind

der Datentyp bool mit den Werten true oder false (wahr oder falsch)

4493book Seite 40 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

41

2

der Datentyp char fuumlr einzelne Zeichen

string der Datentyp string fuumlr Zeichenketten mit variabler Laumlnge

Im folgenden Beispiel werden Variablen dieser Typen deklariert mit Wer-

ten versehen und in einem Label angezeigt (Projekt Datentypen)

private void CmdAnzeige_Click()

Ganze Zahlen byte Byshort Shint It Hexlong Lg

Zahlen mit Nachkommastellen float Fldouble Db1 Db2 Exp1 Exp2decimal De

Boolesche Variable Zeichen Zeichenkette bool Bochar Chstring St

Ganze Zahlen By = 200Sh = 30000It = 2000000000Lg = 3000000000Hex = 0x3a

Zahlen mit Nachkommastellen Fl = 10f 7Db1 = 1 7Db2 = 10 7De = 10m 7Exp1 = 15e3Exp2 = 15e-3

Boolesche Variable Zeichen Zeichenkette Bo = true

4493book Seite 41 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

2 Grundlagen

42

Ch = aSt = Zeichenkette

LblAnzeigeText =byte + By + n + short + Sh + n +int + It + n + long + Lg + n +(hexadezimale Zahl) + Hex + nn +

float + Fl + n + double 1 + Db1 + n +double 2 + Db2 + n + decimal + De + n +(Exponent positiv) + Exp1 + n +(Exponent negativ) + Exp2 + nn +

bool + Bo + n +char + Ch + n + string + St

Listing 21 Projekt raquoDatentypenlaquo

Nach Betaumltigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

dung 21 dar

Abbildung 21 Wichtige Datentypen

Zur Erlaumluterung

Deklaration Variablen werden mithilfe der Anweisung ltDatentypgt ltVariablennamegt

deklariert Mehrere Variablen desselben Datentyps koumlnnen durch

Kommata getrennt innerhalb einer Anweisung deklariert werden (z B

int x y)

4493book Seite 42 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

43

2

Variablen koumlnnen bereits bei der Deklaration einen Wert erhalten zum

Beispiel short Sh = 30000

Wertebereich Bei den Datentypen fuumlr ganze Zahlen fuumlhrt die Zuweisung einer zu

groszligen Zahl zu einer Uumlberschreitung des Wertebereichs und zu einer

Fehlermeldung

Hexadezimal Ganze Zahlen koumlnnen auch in hexadezimaler Form zugewiesen werden

mithilfe von 0x zu Beginn der Zahl gefolgt von den hexadezimalen Zif-

fern 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 2times162 + 15times161 +

5times160 = 512 + 240 + 5 = 757

Zahlen mit Nach-

kommastellen

Die Datentypen fuumlr Zahlen mit Nachkommastellen unterscheiden sich

in ihrer Genauigkeit Nachkommastellen muumlssen im Programmcode

durch einen Dezimalpunkt abgetrennt werden In der Ausgabe wird

dagegen ein Dezimalkomma dargestellt Die Zuweisung einer zu groszligen

Zahl fuumlhrt zu einer Fehlermeldung Die Zuweisung einer zu kleinen Zahl

wiederum fuumlhrt zur Anzeige von raquoUnendlichlaquo () bzw zu einer unge-

nauen Speicherung

Division

ganzer Zahlen

Bei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Moumlchten Sie das nicht muumls-

sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkommastel-

len kennzeichnen z B durch das Anhaumlngen von 0 Statt 1 schreiben Sie

10

Kuumlrzel f und m float-Werte sollten mit einem f gekennzeichnet werden decimal-Werte

mit einem m Damit erhaumllt die gesamte Division im vorliegenden Pro-

gramm einen float- bzw decimal-Wert

Exponential-

schreibweise

Sehr groszlige oder sehr kleine Zahlen koumlnnen im Programmcode auch in

der Exponentialschreibweise zugewiesen werden Zwei Beispiele 15e3

fuumlr 15000 oder 15e-3 fuumlr 00015

true false Werte fuumlr den Datentyp bool werden mit true und false zugewiesen

aber mit True und False ausgegeben

Anfuumlhrungszeichen Werte fuumlr Zeichen muumlssen in einfachen Anfuumlhrungszeichen und fuumlr Zei-

chenketten in doppelten Anfuumlhrungszeichen angegeben werden

Die Datentypen int double bool und string werden am Haumlufigsten ein-

gesetzt

4493book Seite 43 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

2 Grundlagen

44

Uumlbung

Uumlbung

UDatentypen

Schreiben Sie ein Programm in welchem Ihre Adresse Ihr Nach- und Vor-

name Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

speichert und anschlieszligend wie in Abbildung 22 ausgegeben werden

Abbildung 22 Uumlbung UDatentypen

214 Guumlltigkeitsbereich

Lokal Variablen die innerhalb einer Methode vereinbart werden haben ihre Guumll-

tigkeit nur in der Methode Auszligerhalb 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 Verfuumlgung Beim naumlchsten Aufruf der glei-

chen Methode werden diese Variablen neu deklariert und erhalten neue

Werte

Klassenweit guumlltig Variablen die auszligerhalb von Methoden vereinbart werden sind innerhalb

der gesamten Klasse guumlltig 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

private Diese klassenweit guumlltigen Variablen werden mit dem Schluumlsselwort pri-

vate deklariert Weitere Einzelheiten zu klassenweit guumlltigen Variablen fin-

den Sie in Abschnitt 52 Sie sind auszligerhalb der Klasse nicht guumlltig

public Variablen die mit dem Schluumlsselwort public vereinbart werden sind oumlf-

fentlich Damit sind sie auch auszligerhalb der jeweiligen Klasse also z B auch

in anderen Formularen guumlltig Mehr dazu ebenfalls in Abschnitt 52

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 zulaumlssig

4493book Seite 44 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

45

2

Ausblenden Eine klassenweit guumlltige Variable wird innerhalb einer Methode von

einer lokalen Variablen mit dem gleichen Namen ausgeblendet

Im folgenden Beispiel werden Variablen unterschiedlicher Guumlltigkeitsbe-

reiche deklariert an verschiedenen Stellen veraumlndert und ausgegeben (Pro-

jekt Gueltigkeitsbereich)

public partial class Form1 Form

private int Mx = 0

private void CmdAnzeigen1_Click()

int x = 0Mx = Mx + 1x = x + 1LblAnzeigeText = x + x + Mx + Mx

private void CmdAnzeigen2_Click()

int Mx = 0Mx = Mx + 1LblAnzeigeText = Mx + Mx

Listing 22 Projekt raquoGueltigkeitsbereichlaquo

Zur Erlaumluterung

In der ersten Methode wird der Wert der klassenweit guumlltigen Variablen

Mx bei jedem Aufruf erhoumlht Die lokale Variable x wird immer wieder auf

1 gesetzt (siehe Abbildung 23)

Abbildung 23 Lokale und klassenweit guumlltige Variablen

4493book Seite 45 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

2 Grundlagen

46

In der zweiten Methode blendet die lokale Variable Mx die gleichnamige

klassenweit guumlltige Variable aus Die lokale Variable wird immer wieder

auf 1 gesetzt (siehe Abbildung 24)

Abbildung 24 Lokale Variable

Startwert setzen Hinweis Die Variablen werden vor ihrer ersten Benutzung initialisiert

d h sie werden mit einem Startwert besetzt

Uumlbung

Uumlbung

UGueltigkeits-

bereich

Erstellen Sie ein Programm in dem zwei Buttons ein Label und drei Varia-

blen eines geeigneten Datentyps eingesetzt werden

die klassenweit guumlltige Variable x

die Variable y die nur lokal in der Methode zum Click-Ereignis des ers-

ten Buttons guumlltig ist

die Variable z die nur lokal in der Methode zum Click-Ereignis des zwei-

ten Buttons guumlltig ist

In der ersten Methode werden x und y jeweils um 01 erhoumlht und angezeigt

(siehe Abbildung 25)

Abbildung 25 Ausgabe der ersten Methode nach einigen Klicks

In der zweiten Methode werden x und z jeweils um 01 erhoumlht und ange-

zeigt (siehe Abbildung 26)

4493book Seite 46 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

47

2

Abbildung 26 Ausgabe der zweiten Methode nach weiteren Klicks

215 Konstanten

Konstanten reprauml-

sentieren Werte

Konstanten sind vordefinierte Werte die waumlhrend der Laufzeit nicht ver-

aumlndert werden koumlnnen Am besten geben Sie Konstanten aussagekraumlftige

Namen damit sie leichter zu behalten sind als die Werte die sie repraumlsen-

tieren Konstanten werden an einer zentralen Stelle definiert und koumlnnen

an verschiedenen Stellen des Programms genutzt werden Somit muss eine

eventuelle Aumlnderung einer Konstanten zur Entwurfszeit nur an einer Stelle

erfolgen Der Guumlltigkeitsbereich von Konstanten ist analog zum Guumlltig-

keitsbereich von Variablen

Integrierte

Konstanten

Zu den Konstanten zaumlhlen auch die integrierten Konstanten Auch sie re-

praumlsentieren Zahlen die aber nicht so einpraumlgsam sind wie die Namen der

Konstanten

Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

(Projekt Konstanten)

public partial class Form1 Form

private const int MaxWert = 75private const string Eintrag = Picture

private void CmdKonstanten_Click()

const int MaxWert = 55const int MinWert = 5LblAnzeigeText = (MaxWert - MinWert) 2 + n + Eintrag

Listing 23 Projekt raquoKonstantenlaquo Teil 1

4493book Seite 47 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

2 Grundlagen

48

Zur Erlaumluterung

const Konstanten werden mithilfe des Schluumlsselworts const definiert

Die Konstanten MaxWert und Eintrag werden mit klassenweiter Guumlltig-

keit festgelegt

Innerhalb der Methode werden die beiden lokalen Konstanten MaxWert

und MinWert festgelegt MaxWert blendet die klassenweit guumlltige Konstan-

te gleichen Namens aus wie Sie in Abbildung 27 sehen koumlnnen

Abbildung 27 Konstanten

216 Enumerationen

Konstanten

aufzaumlhlen

Enumerationen sind Aufzaumlhlungen von Konstanten die thematisch zu-

sammengehoumlren 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 fuumlr C zahlreiche

vordefinierte Enumerationen Aumlhnlich wie bei den integrierten Konstan-

ten sind die Namen der Enumerationen und deren Elemente besser lesbar

als die durch sie repraumlsentierten Zahlen

Ein Beispiel Die Enumeration DialogResult ermoumlglicht dem Programmie-

rer die zahlreichen moumlglichen Antworten des Benutzers beim Einsatz von

Windows-Standarddialogfeldern (Ja Nein Abbrechen Wiederholen

Ignorieren ) anschaulich einzusetzen

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

4493book Seite 48 Mittwoch 8 Maumlrz 2017 112 13

21 Variablen und Datentypen

49

2

private void CmdEnumeration1_Click()

LblAnzeigeText = Farbe + FarbeGelb + + (int)FarbeGelb

private void CmdEnumeration2_Click()

LblAnzeigeText = Sonntag + DayOfWeekSunday + +(int)DayOfWeekSunday + n + Samstag +DayOfWeekSaturday + + (int)DayOfWeekSaturday

Listing 24 Projekt raquoKonstantenlaquo Teil 2

Zur Erlaumluterung

Klassenweit guumlltig 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 auszligerhalb von Methoden vereinbart werden Damit ist sie automa-

tisch fuumlr die gesamte Klasse guumlltig

Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-

tion Farbe verwendet Zunaumlchst wird der Name des Elements ausgege-

ben Gelb Die Zahl welche das Element repraumlsentiert kann erst nach

einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

den Diese Umwandlung wird mithilfe eines Casts vorgenommen (int)

(siehe Abbildung 28)

Abbildung 28 Erste Enumeration

DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefinier-

ten Enumeration DayOfWeek verwendet siehe Abbildung 29 Sie koumlnnen

sie zur Ermittlung des Wochentags eines gegebenen Datums verwen-

den

4493book Seite 49 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

2 Grundlagen

50

Abbildung 29 Zweite Enumeration

22 Operatoren

Zum Zusammensetzen von Ausdruumlcken werden in C wie in jeder anderen

Programmiersprache auch Operatoren verwendet In diesem Buch wur-

den bereits die Operatoren = fuumlr Zuweisungen und + fuumlr Verkettungen ge-

nutzt

Prioritaumlt Es gibt verschiedene Kategorien von Operatoren Vorrangregeln (Prio-

ritaumlten) sind fuumlr die Reihenfolge der Abarbeitung zustaumlndig falls mehrere

Operatoren innerhalb eines Ausdrucks verwendet werden Diese Vorrang-

regeln finden Sie weiter unten in diesem Abschnitt Falls Sie sich bei der

Verwendung dieser Regeln nicht sicher sind empfiehlt es sich die Reihen-

folge durch eigene Klammersetzung explizit festzulegen

221 Rechenoperatoren

Rechenoperatoren Rechenoperatoren dienen der Durchfuumlhrung von Berechnungen siehe Ta-

belle 21

Operator Beschreibung

+ Addition

- Subtraktion oder Negation

Multiplikation

Division

Modulo

++ Erhoumlhung um 1

-- Verminderung um 1

Tabelle 21 Rechenoperatoren

4493book Seite 50 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

51

2

GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten dass die

Nachkommastellen abgeschnitten werden Wenn Sie das nicht moumlchten

muumlssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

stellen kennzeichnen z B durch Anhaumlngen von 0 Statt 5 schreiben Sie

also 50

ModuloDer Modulo-Operator berechnet den Rest einer Division Einige Beispiele

sehen Sie in Tabelle 22

++ --Die Operatoren ++ und -- dienen als Schreibabkuumlrzung und sollen mithilfe

des Projekts Rechenoperatoren erlaumlutert werden

private void CmdAnzeigen1_Click()

int x = 5x++++xx = x + 1LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

int x = 5LblAnzeigeText = Ergebnis + x++

private void CmdAnzeigen3_Click()

int x = 5LblAnzeigeText = Ergebnis + ++x

Listing 25 Projekt raquoRechenoperatorenlaquo

Ausdruck Ergebnis Erklaumlrung

19 4 3 19 durch 4 ist 4 Rest 3

195 42 27 195 durch 42 ist 4 Rest 27

Tabelle 22 Modulo-Operator

4493book Seite 51 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

2 Grundlagen

52

Zur Erlaumluterung

In der ersten Methode hat x zunaumlchst den Wert 5 Der Wert kann mit ++x

oder mit x++ oder mit x = x + 1 jeweils um 1 erhoumlht werden Anschlieszligend

hat x den Wert 8

x++ In der zweiten Methode wird x zunaumlchst ausgegeben und anschlieszligend

um 1 erhoumlht Das liegt daran dass der Operator ++ hinter x steht In der

Ausgabe sehen Sie noch den alten Wert 5 nach der Anweisungszeile

erhaumllt x den Wert 6

++x In der dritten Methode wird x zunaumlchst um 1 erhoumlht und anschlieszligend

ausgegeben In diesem Fall steht der Operator ++ vor x In der Ausgabe

sehen Sie den neuen Wert 6 nach der Anweisungszeile behaumllt x ebenfalls

den Wert 6

x=x+1 Die Schreibweise x = x + 1 als eigene Anweisungszeile schafft hier Klar-

heit

Fuumlr den Operator -- gilt sinngemaumlszlig das Gleiche

Von links

nach rechts

Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

gewertet Dasselbe gilt fuumlr Additionen und Subtraktionen wenn sie zusam-

men in einem Ausdruck auftreten Multiplikation und Division werden da-

bei vor Addition und Subtraktion ausgefuumlhrt

Klammern Mit Klammern kann diese Rangfolge jedoch auszliger Kraft gesetzt werden

damit bestimmte Teilausdruumlcke vor anderen Teilausdruumlcken ausgewertet

werden In Klammern gesetzte Operationen haben grundsaumltzlich immer

Vorrang Innerhalb der Klammern gilt jedoch wieder die normale Rangfol-

ge der Operatoren

Projekt Im Projekt Rechenoperatoren koumlnnen Sie auch die beiden Berechnungen

mit dem Operator leicht selber nachvollziehen

Uumlbung

Uumlbung

URechenoperatoren

Berechnen Sie die beiden folgenden Ausdruumlcke speichern Sie das Ergebnis

in einer Variablen eines geeigneten Datentyps und zeigen Sie es anschlie-

szligend an

1 Ausdruck 3 ndash25 + 4 2

2 Ausdruck 3 (-25 + 4) 2

4493book Seite 52 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

53

2

222 Vergleichsoperatoren

VergleichVergleichsoperatoren (siehe Tabelle 23) dienen dazu festzustellen ob be-

stimmte Bedingungen zutreffen oder nicht Das Ergebnis kann beispiels-

weise zur Ablaufsteuerung von Programmen genutzt werden In Abschnitt

23 wird hierauf noch genauer eingegangen

ProjektAlle Vergleiche innerhalb dieses Abschnitts koumlnnen Sie auch mithilfe des

Codes im Projekt Vergleichsoperatoren selber nachvollziehen

Uumlbung

Uumlbung

UVergleichs-

operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 12 ndash 3 gt= 4 25

2 Ausdruck Maier = Mayer

Operator Beschreibung

lt kleiner als

lt= kleiner als oder gleich

gt groumlszliger als

gt= groumlszliger als oder gleich

== gleich

= ungleich

Tabelle 23 Einige Beispiele sehen Sie in Tabelle 24

Ausdruck Ergebnis

5 gt 3 true

3 == 32 false

5 + 3 2 gt= 12 false

Maier == Mayer false

Tabelle 24 Nutzung von Vergleichsoperatoren

4493book Seite 53 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

2 Grundlagen

54

223 Logische Operatoren

Logik Logische Operatoren dienen dazu mehrere Bedingungen zusammenzu-

fassen Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Pro-

grammen genutzt werden (siehe hierzu auch Abschnitt 23) Die logischen

Operatoren sehen Sie in Tabelle 25

ampamp || ^ Es seien die Variablen A = 1 B = 3 und C = 5 gesetzt Die Ausdruumlcke in der ers-

ten Spalte von Tabelle 26 ergeben jeweils die Ergebnisse in der zweiten

Spalte

Projekt Alle Berechnungen und Erlaumluterungen innerhalb dieses Abschnitts koumln-

nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

ziehen

Uumlbung

Uumlbung

ULogische-

Operatoren

Ermitteln Sie das Ergebnis der beiden folgenden Ausdruumlcke speichern Sie

es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an

1 Ausdruck 4 gt 3 ampamp ndash4 gt ndash3

2 Ausdruck 4 gt 3 || ndash4 gt ndash3

Operator Beschreibung Das Ergebnis ist true wenn

Nicht der Ausdruck false ist

ampamp Und beide Ausdruumlcke true sind

|| inklusives Oder mindestens ein Ausdruck true ist

^ exklusives Oder genau ein Ausdruck true ist

Tabelle 25 Logische Operatoren

Ausdruck Ergebnis

(A lt B) false

(B gt A) ampamp (C gt B) true

(B lt A) || (C lt B) false

(B lt A) ^ (C gt B) true

Tabelle 26 Ausdruumlcke mit logischen Operatoren

4493book Seite 54 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

55

2

amp |Sie koumlnnen auch die logischen bitweisen Operatoren amp (statt ampamp) und | (statt

||) verwenden Hierbei werden alle Teile des Vergleichsausdrucks ausge-

wertet Im Gegensatz dazu wird bei den Operatoren ampamp und || die Auswer-

tung abgebrochen sobald sich der Wert des Ausdrucks nicht mehr veraumln-

dern kann Die Ergebnisse unterscheiden sich allerdings nur falls

innerhalb des Vergleichsausdrucks Werte veraumlndert werden z B mit den

Operatoren ++ oder --

224 Verkettungsoperator

Umwandlung in

Zeichenketten

Der Operator + dient der Verkettung von Zeichenketten Ist einer der Aus-

druumlcke keine Zeichenfolge sondern eine Zahl wird er (wenn moumlglich) in

eine Zeichenfolge verwandelt Das Gesamtergebnis ist wiederum eine Zei-

chenfolge Beispiel

private void CmdAnzeige_Click()

string a bdouble dint x

b = Hallod = 46x = -5a = b + Welt + d + + x + + 12LblAnzeigeText = a LblAnzeigeText = x

Listing 26 Projekt raquoVerkettungsoperatorlaquo

Zur Erlaumluterung

Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-

tentypen zusammengesetzt

Die letzte Anweisung ist auskommentiert weil sie zu einem Fehler

fuumlhrt Die int-Variable x kann nicht direkt als Wert fuumlr die Eigenschaft

Text verwendet werden Sie muss zunaumlchst umgewandelt werden

4493book Seite 55 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

2 Grundlagen

56

Das Ergebnis ist in Abbildung 210 zu sehen

Ein weiteres Beispiel hierfuumlr ist uumlbrigens bereits in Abschnitt 145 zu

finden

Abbildung 210 Verkettung

225 Zuweisungsoperatoren

Zeichen = Den einfachsten Zuweisungsoperator das Gleichheitszeichen haben Sie

bereits genutzt Zur Verkuumlrzung von Anweisungen gibt es aber noch weite-

re Zuweisungsoperatoren Eine Auswahl sehen Sie in Tabelle 27

226 Rangfolge der Operatoren

Prioritaumlt Enthaumllt ein Ausdruck mehrere Operationen werden die einzelnen Teilaus-

druumlcke in einer bestimmten Rangfolge ausgewertet und aufgeloumlst die als

Rangfolge bzw Prioritaumlt der Operatoren bezeichnet wird Dabei gilt die in

Tabelle 28 dargestellte Rangfolge

Operator Beispiel Ergebnis

= x = 7 x erhaumllt den Wert 7

+= x += 5 Der Wert von x wird um 5 erhoumlht

-= x -= 5 Der Wert von x wird um 5 verringert

= x = 3 Der Wert von x wird auf das Dreifache erhoumlht

= 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

+= z += abc Die Zeichenkette z wird um den Text abc ver-

laumlngert

Tabelle 27 Zuweisungsoperatoren

4493book Seite 56 Mittwoch 8 Maumlrz 2017 112 13

22 Operatoren

57

2

KlammernWie bereits bei den Rechenoperatoren erwaumlhnt Mit Klammern kann diese

Rangfolge auszliger Kraft gesetzt werden damit bestimmte Teilausdruumlcke vor

anderen Teilausdruumlcken ausgewertet werden In Klammern gesetzte Ope-

rationen haben grundsaumltzlich Vorrang Innerhalb der Klammern gilt je-

doch wieder die normale Rangfolge der Operatoren

Uumlbung

Uumlbung

UOperatoren

Sind die Bedingungen in Tabelle 29 wahr oder falsch Loumlsen Sie die Aufga-

be moumlglichst ohne Zuhilfenahme des PC

Operator Beschreibung

- negatives Vorzeichen logisches Nicht

Multiplikation Division Modulo

+ - Addition Subtraktion

lt gt lt= gt= Vergleichsoperatoren fuumlr kleiner und groumlszliger

== = Vergleichsoperatoren fuumlr gleich und ungleich

ampamp logisches Und

|| logisches Oder

Tabelle 28 Je weiter oben die Operatoren in der Tabelle stehen desto houmlher ist

ihre Prioritaumlt

Nr Werte Bedingung

1 a=5 b=10 agt0 ampamp b=10

2 a=5 b=10 agt0 || b=10

3 z=10 w=100 z=0 || zgtw || w-z==90

4 z=10 w=100 z==11 ampamp zgtw || w-z==90

5 x=10 y=57 xgt=9 ampamp ylt=58

6 x=10 y=57 xgt=9 ampamp (ylt=58)

7 n1=1 n2=17 n1gt0 ampamp n2gt0 || n1gtn2 ampamp n2=17

8 n1=1 n2=17 n1gt0 ampamp (n2gt0 || n1gtn2) ampamp n2=17

Tabelle 29 Uumlbung UOperatoren

4493book Seite 57 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

2 Grundlagen

58

23 Einfache Steuerelemente

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 Program-

miersprache durch anschauliche Praxisbeispiele zu vertiefen

Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbei-

tet bevor im naumlchsten Abschnitt die Verzweigungen zur Programmsteue-

rung vorgestellt werden den Steuerelementen Panel Zeitgeber Textfeld

und Zahlenauswahlfeld

231 Panel

Container Ein Panel dient normalerweise als Container fuumlr andere Steuerelemente In

unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fuumlr

eine kleine Animation genutzt

Die Eigenschaften BackColor (Hintergrundfarbe) Location (Position) und

Size (Groumlszlige) sind Ihnen bereits von anderen Steuerelementen her bekannt

Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

durch Betaumltigung von vier Buttons um 10 Pixel nach oben unten links

oder rechts verschoben Es hat die Groumlszlige 100 times 100 Pixel die Startposition

X=145 und Y=80 sowie eine eigene Hintergrundfarbe Die Bewegung wird

mithilfe der Struktur Point durchgefuumlhrt

In Abbildung 211 und Abbildung 212 ist das Panel im Startzustand bzw

nach einigen Klicks zu sehen

Abbildung 211 Panel Startzustand

4493book Seite 58 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

59

2

Abbildung 212 Panel nach ein paar Klicks

Der Programmcode

private void CmdNachOben_Click()

pLocation = new Point(pLocationX pLocationY - 10)

private void CmdNachLinks_Click()

pLocation = new Point(pLocationX - 10 pLocationY)

private void CmdNachRechts_Click()

pLocation = new Point(pLocationX + 10 pLocationY)

private void CmdNachUnten_Click()

pLocation = new Point(pLocationX pLocationY + 10)

Listing 27 Projekt raquoPanellaquo

232 Zeitgeber

Timer-Intervall

Enabled

Ein Zeitgeber (Timer) erzeugt in festgelegten Abstaumlnden Zeittakte Diese

Zeittakte sind Ereignisse die der Entwickler mit verschiedenen Aktionen

verbinden kann Das zugehoumlrige Ereignis heiszligt Tick Ein Zeitgeber kann wie

jedes andere Steuerelement zum Formular hinzugefuumlgt werden Da es sich

aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt wird

4493book Seite 59 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

2 Grundlagen

60

er unterhalb des Formulars angezeigt Auch zur Laufzeit ist er nicht sicht-

bar Seine wichtigste Eigenschaft ist das Zeitintervall in dem das Ereignis

auftreten soll Dieses Zeitintervall wird in Millisekunden angegeben Die Ei-

genschaft Enabled dient der Aktivierung bzw Deaktivierung des Zeitgebers

Sie koumlnnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

stellen

Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunaumlchst ein

Formular mit zwei Buttons Betaumltigen Sie den Start-Button erscheint ein

x in einem Bezeichnungsfeld Alle 05 Sekunden erscheint automatisch ein

weiteres x siehe Abbildung 213 Dies wird durch den Timer gesteuert bei

welchem der Wert fuumlr die Eigenschaft Interval auf 500 steht Nach Betaumlti-

gung des Stop-Buttons kommt kein weiteres x mehr hinzu

Abbildung 213 Nach einigen Sekunden

Der zugehoumlrige Code

private void CmdStart_Click()

TimAnzeigeEnabled = true

private void CmdStop_Click()

TimAnzeigeEnabled = false

private void TimAnzeige_Tick()

LblAnzeigeText += x

Listing 28 Projekt raquoZeitgeberlaquo

4493book Seite 60 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

61

2

Uumlbung

Uumlbung

UPanelZeitgeber

Erstellen Sie eine Windows-Anwendung In der Mitte eines Formulars sol-

len zu Beginn vier Panels verschiedener Farbe der Groumlszlige 20 times 20 Pixel plat-

ziert werden siehe Abbildung 214

Abbildung 214 Startzustand

Sobald ein Start-Button betaumltigt wird sollen sich diese vier Panels diago-

nal in ca fuumlnf bis zehn Sekunden zu den Ecken des Formulars bewegen je-

des Panel in eine andere Ecke (siehe Abbildung 215)

Abbildung 215 Nach einigen Sekunden

Uumlbung

Uumlbung UKranDiese Uumlbung gehoumlrt nicht zum Pflichtprogramm Sie ist etwas umfangrei-

cher verdeutlicht aber die Moumlglichkeiten einer schnellen Visualisierung

von Prozessen durch C innerhalb von Visual Studio durch einige wenige

Programmzeilen

Konstruieren Sie aus mehreren Panels einen Kran (Fundament senkrech-

tes Hauptelement waagerechter Ausleger senkrechter Haken am Ausle-

ger) Der Benutzer soll die Moumlglichkeit haben uumlber insgesamt acht Buttons

die folgenden Aktionen auszuloumlsen

4493book Seite 61 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

2 Grundlagen

62

Haken um 10 Pixel ausfahren bzw einfahren

Ausleger um 10 Pixel ausfahren bzw einfahren

Kran um 10 Pixel nach rechts bzw links fahren

Kran um 10 Pixel in der Houmlhe ausfahren bzw einfahren

Denken Sie daran dass bei vielen Bewegungen mehrere Steuerelemente

bewegt werden muumlssen da der Kran sonst seinen Zusammenhalt verliert

Manche Aktionen resultieren nur aus Groumlszligenveraumlnderungen (Eigenschaf-

ten Width und Height) andere nur aus Ortsveraumlnderungen (Location) wie-

der andere aus beidem In Abbildung 216 und Abbildung 217 sehen Sie den

Kran im Startzustand bzw nach einigen Klicks

Abbildung 216 Startzustand

Abbildung 217 Nach einigen Aktionen

4493book Seite 62 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

63

2

Manche Bewegungen des Krans werden vermutlich wenig natuumlrlich wir-

ken Mit zunehmendem Programmierwissen werden Sie dieses Problem

spaumlter aber beheben koumlnnen

233 Textfelder

EingabefeldEin Textfeld dient in erster Linie dazu die Eingabe von Text oder Zahlen

vom Benutzer entgegenzunehmen Diese Eingaben werden in der Eigen-

schaft Text des Textfelds gespeichert Das Aussehen und das Verhalten

eines Textfelds werden u a durch folgende Eigenschaften bestimmt

MultiLine Steht MultiLine auf true koumlnnen Sie bei der Eingabe und bei

der Anzeige mit mehreren Textzeilen arbeiten

ScrollBars Sie koumlnnen ein Textfeld mit vertikalen undoder horizonta-

len Bildlaufleisten zur Eingabe und Anzeige laumlngerer Texte versehen

MaxLength Mit dieser Eigenschaft koumlnnen Sie die Anzahl der Zeichen des

Textfelds beschraumlnken Ist keine Beschraumlnkung vorgesehen kann das

Textfeld insgesamt 32768 Zeichen aufnehmen

Passwort PasswordChar Falls Sie fuumlr diese Eigenschaft im Entwurfsmodus ein

Platzhalterzeichen eingegeben haben wird waumlhrend der Laufzeit fuumlr

jedes eingegebene Zeichen nur dieser Platzhalter angezeigt Diese Eigen-

schaft wird vor allem bei Passwortabfragen verwendet

Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z B (Strg) +

(C) und (Strg) + (V)) in die Zwischenablage kopiert bzw aus der Zwischen-

ablage eingefuumlgt werden

Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

einem Textfeld einen Text eingeben Nach Betaumltigung des Buttons Ausga-

be wird der eingegebene Text in einem zusammenhaumlngenden Satz ausge-

geben (siehe Abbildung 218)

Abbildung 218 Eingabe ins Textfeld

4493book Seite 63 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

2 Grundlagen

64

Der Code lautet wie folgt

private void CmdAusgabe_Click()

LblAusgabeText = Sie haben + TxtEingabeText + eingegeben

Listing 29 Projekt raquoTextfelderlaquo

Zur Erlaumluterung

In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert Die

Eigenschaft wird in einen laumlngeren 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 Betaumltigung

des Buttons Rechnen wird der Wert dieser Zahl verdoppelt das Ergebnis

wird in einem Label darunter ausgegeben

private void CmdRechnen_Click()

double wertwert = ConvertToDouble(TxtEingabeText)wert = wert 2LblAusgabeText = Ergebnis + wert

Listing 210 Projekt raquoTextfelderlaquo Zahleneingabe

Zur Erlaumluterung

ToDouble() Es soll dafuumlr gesorgt werden dass der Inhalt des Textfelds explizit in eine

Zahl (mit moumlglichen Nachkommastellen) umgewandelt wird Das errei-

chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert Die Klasse

Convert bietet eine Reihe von Methoden fuumlr die Umwandlung (sprich Kon-

vertierung) 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 an-

schlieszligend gerechnet werden kann

4493book Seite 64 Mittwoch 8 Maumlrz 2017 112 13

23 Einfache Steuerelemente

65

2

Stellt die eingegebene Zeichenkette keine Zahl dar kommt es zu einem

Laufzeitfehler Diese Situation sollten Sie natuumlrlich vermeiden

ndash Sie koumlnnen dafuumlr vorher uumlberpruumlfen ob es sich bei der Zeichenkette

um eine guumlltige Zahl handelt und entsprechend reagieren Das wird

Ihnen moumlglich sein sobald Sie die in Abschnitt 23 beschriebenen Ver-

zweigungen zur Programmsteuerung beherrschen

Ausnahme-

behandlung

ndash Allgemein koumlnnen Sie Programme so schreiben dass ein Programm-

abbruch abgefangen wird Dazu werden Sie in der Lage sein sobald

Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3) anwenden koumln-

nen

Einige Beispiele

Abbildung 219 zeigt die Eingabe einer Zahl mit Nachkommastellen

Abbildung 219 Eingabe einer Zahl mit Nachkommastellen

Debugging beendenDie Eingabe einer Zeichenkette wie zum Beispiel raquoabclaquo fuumlhrt zur Anzeige

einer nicht behandelten Ausnahme Die Zeile in welcher der Fehler auftritt

wird im Code markiert damit der Fehler beseitigt werden kann (siehe Ab-

bildung 220)

Abbildung 220 Markierung der Fehlerzeile

Sie koumlnnen die aktuellen Werte von Variablen in diesem Moment der

Unterbrechung kontrollieren indem Sie die Maus uumlber diesen Variablen

4493book Seite 65 Mittwoch 8 Maumlrz 2017 112 13

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

2 Grundlagen

66

platzieren Anschlieszligend muss das Programm uumlber den Menuumlpunkt De-

buggen bull Debugging beenden beendet werden bevor es neu gestartet

werden kann

Die Eingabe einer Zahl bei der ein Punkt anstelle eines Kommas zur Ab-

trennung von Nachkommastellen eingegeben wird fuumlhrt zu einem ganz

anderen Rechenergebnis siehe Abbildung 221

Abbildung 221 Punkt vor den Nachkommastellen

Der Punkt wird ignoriert und die Zahl 352 wird daher als 352 interpretiert

was zu dem Ergebnis 704 fuumlhrt

234 Zahlenauswahlfeld

NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

Moumlglichkeit dar Zahlenwerte an ein Programm zu uumlbermitteln Die Zah-

lenwerte koumlnnen innerhalb selbst gewaumlhlter Grenzen und in selbst defi-

nierten Schritten uumlber zwei kleine Pfeiltasten ausgewaumlhlt werden Sie

koumlnnen 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 groumlszligtmoumlglichen Wert und den kleinst-

moumlglichen Wert der Eigenschaft Value Es handelt sich also um die Wer-

te die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten

erreicht werden koumlnnen

Increment Mit Increment wird die Schrittweite eingestellt mit der sich

der Wert (Eigenschaft Value) aumlndert wenn der Benutzer eine der kleinen

Pfeiltasten betaumltigt

DecimalPlaces bestimmt die Anzahl der Nachkommastellen in der An-

zeige des Zahlenauswahlfelds

4493book Seite 66 Mittwoch 8 Maumlrz 2017 112 13

24 Verzweigungen

67

2

ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged Es tritt bei

der Veraumlnderung der Eigenschaft Value ein und sollte anschlieszligend zur

Programmsteuerung verwendet werden

Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese

Eigenschaften und das eben angesprochene Ereignis genutzt Der Benutzer

kann hierbei Zahlenwerte zwischen ndash50 und +50 in Schritten von 01 uumlber

ein Zahlenauswahlfeld einstellen Der ausgewaumlhlte Wert wird unmittelbar

in einem Label angezeigt (siehe Abbildung 222)

Abbildung 222 Zahlenauswahlfeld

Die Eigenschaften werden im Eigenschaftenfenster wie folgt festgelegt

Value Wert 2 die Anwendung startet also bei dem Wert 20 fuumlr das

Zahlenauswahlfeld

Maximum Minimum Werte ndash5 und +5

Increment Wert 01

DecimalPlaces Wert 1 zur Anzeige einer einzelnen Nachkommastelle

Der Code lautet

private void NumEingabe_ValueChanged()

LblAusgabeText = Wert + NumEingabeValue

Listing 211 Projekt raquoZahlenAufAblaquo

24 Verzweigungen

Der Programmcode wird bisher rein sequenziell abgearbeitet also eine

Anweisung nach der anderen Kontrollstrukturen ermoumlglichen eine Steue-

rung dieser Reihenfolge Diese Kontrollstrukturen unterteilen sich in Ver-

zweigungen und Schleifen Verzweigungen gestatten es dem Programm

sich in verschiedene alternative Anweisungsbloumlcke zu verzweigen

4493book Seite 67 Mittwoch 8 Maumlrz 2017 112 13

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

515

Anhang B

Loumlsungen der Uumlbungsaufgaben

Die Bearbeitung der Beispiele das Verstaumlndnis fuumlr ihren Aufbau sowie das

selbststaumlndige Loumlsen der Uumlbungen sind ein wichtiger Schritt beim Erlernen

der Programmierung

In diesem Abschnitt finden Sie jeweils eine Loumlsungsmoumlglichkeit zu jeder

Uumlbung Lassen Sie sich nicht irritieren wenn Ihre Loumlsung anders aussieht

Es ist in erster Linie wichtig dass das Ergebnis stimmt Vielleicht bietet Ih-

nen die hier vorliegende Loumlsung aber auch einen Denkanstoszlig zur Verbes-

serung

B1 Loumlsung der Uumlbungsaufgabe aus Kapitel 1

B11 Loumlsung UName

using Systemusing SystemWindowsFormsnamespace UName

public partial class Form1 Form

public Form1()

InitializeComponent()

private void CmdMeinName_Click(object sender EventArgs e)

LblMeinNameText = Claus Clever

private void CmdEnde_Click(object sender EventArgs e)

4493book Seite 515 Mittwoch 8 Maumlrz 2017 112 13

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

B Loumlsungen der Uumlbungsaufgaben

516

Close()

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

B21 Loumlsung UDatentypen

private void CmdAnzeigen_Click()

string nachname vorname strasse plz ortint alterdouble gehalt

nachname = Clevervorname = Clausstrasse = Bergstraszlige 34plz = 09445ort = Brunnstadtalter = 32gehalt = 285255

LblAnzeigeText = Adresse + n + vorname+ + nachname + n + strasse + n+ plz + + ort + n + n + Alter + alter + n + Gehalt + gehalt

B22 Loumlsung UGueltigkeitsbereich

public partial class Form1 Form

private double x = 00

private void CmdAnzeigen1_Click()

double y = 00

4493book Seite 516 Mittwoch 8 Maumlrz 2017 112 13

B2 Loumlsungen der Uumlbungsaufgaben aus Kapitel 2

517

y = y + 01x = x + 01LblAnzeigeText = x + x + n + y + y

private void CmdAnzeigen2_Click()

double z = 00z = z + 01x = x + 01LblAnzeigeText = x + x + n + z + z

B23 Loumlsung URechenoperatoren

private void CmdAnzeigen1_Click()

double xx = 3 -25 + 4 2LblAnzeigeText = Ergebnis + x

private void CmdAnzeigen2_Click()

double xx = 3 (-25 + 4) 2LblAnzeigeText = Ergebnis + x

B24 Loumlsung UVergleichsoperatoren

private void CmdVergleich1_Click()

bool pp = 12 - 3 gt= 4 25LblAnzeigeText = Ergebnis + p

4493book Seite 517 Mittwoch 8 Maumlrz 2017 112 13

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Auf einen Blick

Auf einen Blick

1 Einfuumlhrung 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 ADONET 357

9 Internetanwendungen mit ASPNET 413

10 Zeichnen mit GDI+ 439

11 Beispielprojekte 455

12 Windows Presentation Foundation 481

4493book Seite 3 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Inhalt

5

Inhalt

1 Einfuumlhrung 15

11 Aufbau dieses Buchs 15

12 Visual Studio 2017 16

13 Mein erstes Windows-Programm 16

14 Visual Studio-Entwicklungsumgebung 17

141 Ein neues Projekt 17

142 Einfuumlgen von Steuerelementen 19

143 Arbeiten mit dem Eigenschaften-Fenster 20

144 Speichern eines Projekts 23

145 Das Codefenster 23

146 Schreiben von Programmcode 26

147 Kommentare 27

148 Starten Ausfuumlhren und Beenden des Programms 28

149 Ausfuumlhrbares Programm 29

1410 Schlieszligen und Oumlffnen eines Projekts 29

1411 Uumlbung 30

1412 Empfehlungen fuumlr Zeilenumbruumlche 30

15 Arbeiten mit Steuerelementen 31

151 Steuerelemente formatieren 31

152 Steuerelemente kopieren 32

153 Eigenschaften zur Laufzeit aumlndern 33

154 Vergabe und Verwendung von Namen 36

155 Verknuumlpfung von Texten mehrzeilige Texte 36

156 Eigenschaft BackColor Farben allgemein 37

2 Grundlagen 39

21 Variablen und Datentypen 39

211 Namen Werte 39

212 Deklarationen 40

213 Datentypen 40

4493book Seite 5 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Inhalt

6

214 Guumlltigkeitsbereich 44

215 Konstanten 47

216 Enumerationen 48

22 Operatoren 50

221 Rechenoperatoren 50

222 Vergleichsoperatoren 53

223 Logische Operatoren 54

224 Verkettungsoperator 55

225 Zuweisungsoperatoren 56

226 Rangfolge der Operatoren 56

23 Einfache Steuerelemente 58

231 Panel 58

232 Zeitgeber 59

233 Textfelder 63

234 Zahlenauswahlfeld 66

24 Verzweigungen 67

241 ifelse 68

242 switchcase 75

243 Uumlbungen 78

25 Verzweigungen und Steuerelemente 79

251 Kontrollkaumlstchen 79

252 Optionsschaltflaumlchen 82

253 Mehrere Ereignisse in einer Methode behandeln 84

254 Mehrere Gruppen von Optionsschaltflaumlchen 86

255 Methode ohne Ereignis Modularisierung 89

256 Schieberegler 90

26 Schleifen 92

261 for-Schleife 92

262 while- und dowhile-Schleife 95

263 Uumlbungen 98

27 Schleifen und Steuerelemente 101

271 Listenfeld 101

272 Listenfeld fuumlllen 101

273 Wichtige Eigenschaften 102

274 foreach-Schleife 104

275 Wechsel der Auswahl 104

276 Wichtige Methoden 106

4493book Seite 6 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

7

277 Mehrfachauswahl 109

278 Kombinationsfelder 110

3 Fehlerbehandlung 115

31 Entwicklung eines Programms 115

32 Fehlerarten 116

33 Syntaxfehler und IntelliSense 117

34 Laufzeitfehler und Exception Handling 119

341 Programm mit Laufzeitfehlern 119

342 Einfaches Exception Handling 121

343 Erweitertes Exception Handling 123

35 Logische Fehler und Debugging 124

351 Einzelschrittverfahren 124

352 Haltepunkte 126

353 Uumlberwachungsfenster 126

4 Erweiterte Grundlagen 129

41 Steuerelemente aktivieren 129

411 Ereignis Enter 129

412 Eigenschaften Enabled und Visible 132

42 Bedienung per Tastatur 135

421 Eigenschaften TabIndex und TabStop 135

422 Tastenkombination fuumlr Steuerelemente 136

43 Ereignisgesteuerte Programmierung 137

431 Eine Ereigniskette 137

432 Endlose Ereignisketten 139

433 Textfelder koppeln 141

434 Tastatur und Maus 142

44 Datenfelder 144

441 Eindimensionale Datenfelder 144

442 Ein Feld durchsuchen 146

4493book Seite 7 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Inhalt

8

443 Weitere Feldoperationen 148

444 Mehrdimensionale Datenfelder 150

445 Datenfelder initialisieren 155

446 Verzweigte Datenfelder 156

447 Datenfelder sind dynamisch 158

45 Methoden 160

451 Einfache Methoden 161

452 Uumlbergabe per Referenz 163

453 Methoden mit Ruumlckgabewerten 167

454 Optionale Argumente 169

455 Benannte Argumente 170

456 Beliebig viele Argumente 172

457 Rekursiver Aufruf 173

458 Uumlbungen zu Methoden 176

46 Konsolenanwendung 176

461 Anwendung erzeugen 176

462 Ein- und Ausgabe von Text 177

463 Eingabe einer Zahl 178

464 Erfolgreiche Eingabe einer ganzen Zahl 180

465 Ausgabe formatieren 181

466 Aufruf von der Kommandozeile 183

5 Objektorientierte Programmierung 187

51 Was ist Objektorientierung 187

52 Klasse Eigenschaft Methode Objekt 188

53 Eigenschaftsmethode 192

54 Konstruktor 194

55 Namensraumlume 198

56 Referenzen Vergleiche und Typen 199

561 Referenzen 200

562 Operator == 201

563 Objekte vergleichen 202

564 Typ eines Objekts ermitteln 203

565 Typ eines Objekts durch Vergleich ermitteln 205

4493book Seite 8 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

9

57 Delegates 205

58 Statische Elemente 208

59 Vererbung 211

510 Konstruktoren bei Vererbung 215

511 Polymorphie 217

512 Schnittstellen 221

513 Strukturen 224

514 Generische Typen 228

5141 Eine Liste von Zeichenketten 229

5142 Eine Liste von Objekten 232

5143 Ein Dictionary von Objekten 235

515 Eigene Klassenbibliotheken 238

5151 DLL erstellen 239

5152 DLL nutzen 241

516 Mehrere Formulare 242

6 Wichtige Klassen in NET 247

61 Klasse String fuumlr Zeichenketten 247

611 Eigenschaften der Klasse String 248

612 Trimmen 250

613 Splitten 251

614 Suchen 253

615 Einfuumlgen 256

616 Loumlschen 258

617 Teilzeichenkette ermitteln 259

618 Zeichen ersetzen 261

619 Ausgabe formatieren 262

62 Datum und Uhrzeit 264

621 Eigenschaften von DateTime 264

622 Rechnen mit Datum und Uhrzeit 266

623 DateTimePicker 269

4493book Seite 9 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Inhalt

10

63 Dateien und Verzeichnisse 272

631 Lesen aus einer Textdatei 272

632 Schreiben in eine Textdatei 274

633 Sicheres Lesen aus einer Textdatei 276

634 Sicheres Schreiben in eine Textdatei 279

635 Die Klassen File und Directory 280

636 Das aktuelle Verzeichnis 281

637 Eine Liste der Dateien 282

638 Eine Liste der Dateien und Verzeichnisse 283

639 Informationen uumlber Dateien und Verzeichnisse 284

6310 Bewegen in der Verzeichnishierarchie 285

64 XML-Dateien 287

641 Aufbau von XML-Dateien 287

642 Schreiben in eine XML-Datei 288

643 Lesen aus einer XML-Datei 290

644 Schreiben von Objekten 292

645 Lesen von Objekten 294

65 Rechnen mit der Klasse Math 296

7 Weitere Elemente eines Windows-Programms 303

71 Hauptmenuuml 303

711 Erstellung des Hauptmenuumls 303

712 Code des Hauptmenuumls 306

713 Klasse Font 308

714 Schriftart 308

715 Schriftgroumlszlige 310

716 Schriftstil 311

72 Kontextmenuuml 312

721 Erstellung des Kontextmenuumls 312

722 Code des Kontextmenuumls 313

73 Symbolleiste 315

731 Erstellung der Symbolleiste 315

732 Code der Symbolleiste 316

4493book Seite 10 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

11

74 Statusleiste 319

741 Erstellung der Statusleiste 319

742 Code der Statusleiste 319

75 Eingabedialogfeld 321

76 Ausgabedialogfeld 325

77 Standarddialogfelder 331

771 Datei oumlffnen 331

772 Datei speichern unter 333

773 Verzeichnis auswaumlhlen 335

774 Farbe auswaumlhlen 337

775 Schrifteigenschaften auswaumlhlen 338

78 Steuerelement ListView 339

79 Steuerelement Chart 343

710 Steuerelement DataGridView 347

711 Lokalisierung 352

8 Datenbankanwendungen mit ADONET 357

81 Was sind relationale Datenbanken 357

811 Beispiel raquoLagerlaquo 357

812 Indizes 360

813 Relationen 362

814 Uumlbungen 366

82 Anlegen einer Datenbank in MS Access 368

821 Aufbau von Access 368

822 Datenbankentwurf in MS Access 2016 369

823 Uumlbungen 374

83 Datenbankzugriff mit C innerhalb von Visual Studio 374

831 Beispieldatenbank 375

832 Ablauf eines Zugriffs 376

833 Verbindung 376

834 SQL-Befehl 377

835 OleDb 377

4493book Seite 11 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Inhalt

12

836 Auswahlabfrage 378

837 Aktionsabfrage 380

84 SQL-Befehle 382

841 Auswahl mit SELECT 383

842 Aumlndern mit UPDATE 387

843 Loumlschen mit DELETE 388

844 Einfuumlgen mit INSERT 388

845 Typische Fehler in SQL 388

85 Ein Verwaltungsprogramm 390

851 Initialisierung 390

852 Alle Datensaumltze sehen 391

853 Datensatz einfuumlgen 394

854 Datensatz aumlndern 396

855 Datensatz loumlschen 399

856 Datensatz suchen 401

86 Abfragen uumlber mehrere Tabellen 403

861 Datenbankmodell und Tabellen 403

862 Alle Personen 405

863 Anzahl der Kunden 405

864 Alle Kunden mit allen Projekten 405

865 Alle Personen mit allen Projektzeiten 406

866 Alle Personen mit Zeitsumme 407

867 Alle Personen mit allen Personenzeiten 408

868 Alle Projekte mit allen Zeitsumme 409

869 JOIN oder WHERE 409

87 Verbindung zu MySQL 410

871 NET-Treiber 410

9 Internetanwendungen mit ASPNET 413

91 Grundlagen von Internetanwendungen 413

911 Statische Internetanwendungen 413

912 Dynamische Internetanwendungen 414

913 Vorteile von ASPNET 415

4493book Seite 12 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

13

92 Ein lokaler Webserver 415

921 Eine erste Internetanwendung 415

93 Eine erste ASPNET-Anwendung 418

931 Fehlerhafte Programmierung 420

94 Formatierung von Internetseiten 421

95 Senden und Auswerten von Formulardaten 423

96 Weitere Formularelemente 425

97 Ein Kalenderelement 428

98 ASPNET und ADONET 430

99 Datenbank im Internet aumlndern 433

10 Zeichnen mit GDI+ 439

101 Grundlagen von GDI+ 439

102 Linie Rechteck Polygon und Ellipse zeichnen 439

1021 Grundeinstellungen 440

1022 Linie 441

1023 Rechteck 442

1024 Polygon 443

1025 Ellipse 443

1026 Dicke und Farbe aumlndern Zeichnung loumlschen 444

103 Text schreiben 445

104 Bilder darstellen 447

105 Dauerhaft zeichnen 449

106 Zeichnen einer Funktion 451

11 Beispielprojekte 455

111 Spielprogramm Tetris 455

1111 Spielablauf 455

1112 Programmbeschreibung 456

4493book Seite 13 Mittwoch 8 Maumlrz 2017 112 13

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Inhalt

14

1113 Steuerelemente 457

1114 Initialisierung des Programms 458

1115 Erzeugen eines neuen Panels 460

1116 Der Zeitgeber 461

1117 Panels loumlschen 462

1118 Panels seitlich bewegen 466

1119 Panels nach unten bewegen 467

11110 Pause 468

112 Lernprogramm Vokabeln 468

1121 Benutzung des Programms 468

1122 Erweiterung des Programms 470

1123 Initialisierung des Programms 471

1124 Ein Test beginnt 472

1125 Zwei Hilfsmethoden 475

1126 Die Antwort pruumlfen 476

1127 Das Benutzermenuuml 477

12 Windows Presentation Foundation 481

121 Layout 482

122 Steuerelemente 485

123 Frame-Anwendung 488

124 Zweidimensionale Grafik 491

125 Dreidimensionale Grafik 494

126 Animation 498

127 WPF und Windows Forms 501

1271 Windows Forms in WPF 502

1272 WPF in Windows Forms 503

A Installation und technische Hinweise 507

B Loumlsungen der Uumlbungsaufgaben 515

Index 535

4493book Seite 14 Mittwoch 8 Maumlrz 2017 112 13

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Index

535

Index

- 50

-- 51

^ 54 74 312

_ 385

54

= 53

(int) 49 69

[] 152

[] 145

[][] 157

24

279

50

= 56

50

27

27

= 56

amp 55 136 305

ampamp 54 72

182 263

50 385

= 56

+ 36 50 55

++ 51

+= 56

lt 53 384

lt= 53 384

ltgt 384

-= 56

= 56 384

== 53 153 201

gt 53 384

gt= 53 384

| 55 312

|| 54 73

11-Relation 362

1n-Relation 360 363

3D-Koumlrper 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

ADONET 357

Aktionsabfrage 380

Aktivierungsreihenfolge 135

AND 384

Anfuumlhrungszeichen 43

Angle

LabelStyle 346

Animation 498

Anweisung 26

im Block 68

mehrfach durchlaufen 92

Anwendung

abbrechen 181

Konfigurationsdatei 513

mehrsprachig 352

weitergeben 511

Appconfig 513

Append 274

appSettings 513

ArcSegment 493

args 184

4493book Seite 535 Mittwoch 8 Maumlrz 2017 112 13

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Index

536

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

ASPNET 413

Programmierfehler 420

Atan() 297

Attached Event 484

Attached Property 484

AttributeCount

XmlTextReader 291

Auflistung 92

Aufzaumlhlung 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

Befehlsschaltflaumlche 19

Bericht

Datenbank 369

Bezeichnungsfeld 19

Beziehung 357 360

erstellen 373

Beacutezierkurve 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 Menuuml 307

CheckedChanged 79 82

Child

WindowsFormsHost 502

class 188

Clear()

generische Liste 393

Series 345

Zeichnung 445

ClickOnce-Verteilung 511

4493book Seite 536 Mittwoch 8 Maumlrz 2017 112 13

Index

537

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

ConnectorNET 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

Oumlffnungsmodus 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

Aumlnderungszeitpunkt 281

Erzeugungszeitpunkt 280

Information uumlber 277 280

lesen 272

oumlffnen 274

oumlffnen Dialog 331

schlieszligen 274

speichern 272

speichern Dialog 333

Zugriffszeitpunkt 280

Datenbank 357

Anzahl Datensaumltze 405

Datensaumltze gruppieren 408

erstellen 370

Summe uumlber Datensaumltze 408

verknuumlpfte Abfrage 403

Datenbankdatei 368

Datenbanksystem 360

Datenfeld 144

Dimensionsgroumlszlige 152

durchsuchen 146 150

dynamisch veraumlndern 158

eindimensional 144

initialisieren 155

Klasse 148

kopieren 150

4493book Seite 537 Mittwoch 8 Maumlrz 2017 112 13

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Index

538

Datenfeld (Forts)

mehrdimensional 150

nicht rechteckig 156

Referenz auf 160

sortieren 150

uumlbergeben 163

Verweis auf 145

verzweigt 156

Datenkapselung 189 214

Datenkonnektivitaumlt 375

Datenpunkt

Chart 345

Datenreihe 345

Datensatz 358

aumlndern 387

auswaumlhlen 383

einfuumlgen 388

loumlschen 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

defaultaspx 418

Delegate 205

DELETE 377 388

DESC 386

Description 335

Design-Ansicht 482

Detailtabelle 363

Dezimaltrennzeichen 396

Diagramm 343

DialogResult 326 331

DialogResultOk 333

Dictionary

generisch 235

Dictionarylt gt 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

aumlndern 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

4493book Seite 538 Mittwoch 8 Maumlrz 2017 112 13

Index

539

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

Feldgroumlszlige 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

FontStyle 312

FontDialog 338

FontFamily 311

FontStyleBold 312

FontStyleItalic 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

hinzufuumlgen 242

importieren 510

loumlschen 510

mehrere 242

Start- 510

wird geladen 101

Formularansicht 23

Formularbasierte Ressourcen 352

Formularvorlage 509

4493book Seite 539 Mittwoch 8 Maumlrz 2017 112 13

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Index

540

Fortschrittsbalken 319

Frame 488

FromArgb() 38 91

FromFile() 447

Image 342

FullRowSelect

ListView 342

Funktion

mathematische 296

zeichnen 451

G

GDI+ 439

Generische Liste 229 232 459

fuumlllen 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

Groumlszliger als 53 384

GROUP BY 408

GroupBox 87

Guumlltigkeitsbereich 44 162

H

Haltepunkt 126

entfernen 126

Hauptmenuuml 303 468

head 417

Headertext 350

Height 33

hexadezimal 43

Hide() 245

Hilfslinien 31

Hilfstabelle 360

Hoch 297

Hour 264

HTML 413

html 417

HTML-Markierung 417

Hyperlink 491

I

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

indexhtm 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

4493book Seite 540 Mittwoch 8 Maumlrz 2017 112 13

Index

541

Insert() (Forts)

Zeichenkette 256

Installation 507

Installationsprogramm 511

Instanziierung 191

int 40

Integritaumlt referentielle 374

IntelliSense 117

Interaction 322

Interface 221

Internetanwendung 413

Daten senden 423

dynamisch 414

erstellen 415

Internetdatenbank 430

aumlndern 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 Menuuml 305

Kommandozeile 183

Aufruf 184

Kommentarzeile 27

Konfigurationsdaten 512

Konsolenanwendung 176

Konstante 47

integriert 47

Konstruktor 194 215

Kontextmenuuml 312

Kontrollkaumlstchen 79

in Menuuml 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

4493book Seite 541 Mittwoch 8 Maumlrz 2017 112 13

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Index

542

Length 248

Licht 496

LIKE 385

LineSegment 493

Linie 442

Listlt gt 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

mn-Relation 363

Main() 177

MainWindowxaml 482

MainWindowxamlcs 484

Margin 484

Markierungssprache 413

Mastertabelle 363

Material 496

Math 296

Maus

Ereignis 142

MaxDate

DateTimePicker 271

Maximum

Datenfeld 146

Fortschrittsbalken 321

NumericUpDown 66

Maximum (Forts)

Schieberegler 91

MaxLength

Textfeld 63

MaxSize 338

Mehrfachauswahl 109

Steuerelemente 31

switch 75

Mehrfachvererbung 221

Mehrsprachigkeit 352

Menuuml 303

MenuStrip 303

MeshGeometry3D 496

Message 122

MessageBox 325

MessageBoxButtons 326

MessageBoxIcon 326

Methode 161 188

gekapselt 25

mit Ruumlckgabewert 167

ohne Ereignis 89

ohne Ruumlckgabewert 25

statisch 208

uumlberladen 196

verlassen 161

Microsoft Access Database Engine 375

MicrosoftACEOLEDB120 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

4493book Seite 542 Mittwoch 8 Maumlrz 2017 112 13

Index

543

MS Access 368

2016 370

MultiExtended 109

MultiLine

Textfeld 63

Multiplikation 50

MultiSelect 331

MySQL 410

MySQLData 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

Oumlffnungsmodus 274

OleDb 377

OleDbCommand 377

OleDbConnection 376

OleDbReader 378

ON 406

OnSelectionChanged 430

Open 274

Open()

OleDbConnection 377

OpenFileDialog 331

Operator 50

bitweise 55

fuumlr Berechnungen 50

logisch 54 384

Prioritaumlt 56

Rangfolge 56

ternaumlr 71

Vergleich 53 201

Zuweisung 56

option 427

Optionsschaltflaumlche 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

4493book Seite 543 Mittwoch 8 Maumlrz 2017 112 13

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Index

544

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

Primaumlrindex 361

Primaumlrschluumlssel erstellen 372

Print()

Printing 347

Printing

Chart 346

PrintingManager

Chart 346

PrintPreview()

Printing 347

private 25 44 163 190

Programcs 177

Programm

beenden 28

starten 28

testen 29

Programmentwicklung 115

Programmierung

clientseitig 414

ereignisgesteuert 137

serverseitig 414

ProgressBar 319

Projekt

Eigenschaften 375

neu (WPF) 481

oumlffnen 29

schlieszligen 29

speichern 23

Verweis hinzufuumlgen 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

4493book Seite 544 Mittwoch 8 Maumlrz 2017 112 13

Index

545

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 Ruumlckgabewert 167

Ringtausch 164

RootFolder 335

Rotationstransformation 498

Round() 297

RowIndex 352

Rows 349 351

Ruumlckgabewert 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

naumlchster Durchlauf 93

verlassen 93

Schleifenvariable 92

Schnittstelle 221

Schrift 308

auswaumlhlen 338

Schriftart 308

nicht proportional 262

Schriftgroumlszlige 310

Schriftstil 311

Schrittweite

NumericUpDown 66

script 419

Scrollbalken 101

ScrollBars

Textfeld 63 315

Second 264

Seiten in Frames 488

Sekundaumlrindex 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

4493book Seite 545 Mittwoch 8 Maumlrz 2017 112 13

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Index

546

SolidBrush 441

Solution Explorer 18

Sort() 150

SpecialFolder 336

Spin-Button 271

Split() 251

SQL 377

Groszligschrift 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

auswaumlhlen 20

einfuumlgen 19

Groumlszlige 33

Hintergrundfarbe 37

Kontextmenuuml 312

kopieren 32

Liste von 461

markieren 31

Position 33 58

sichtbar 132

zur Laufzeit erzeugen 205 455

zur Laufzeit loumlschen 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

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

SystemCollectionsSpecialized 514

SystemDataOleDb 377 432

SystemDrawing 458

SystemGlobalization 354

SystemIO 272 273 471

SystemResources 356

SystemText 290

SystemThreading 354

SystemXaml 503

SystemXml 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

4493book Seite 546 Mittwoch 8 Maumlrz 2017 112 13

Index

547

Tasten-Key 498

Tastenkombination

fuumlr Steuerelement 136

Strg C 181

Strg F5 178

Teilzeichenkette 259

Template

Formular 509

Projekt 510

Ternaumlrer Operator 71

Tetris 455

Text

Eigenschaft 21 63 249

in Zeichnung 447

umwandeln 64

verketten 55

TextBox

in Menuuml 305

WPF 487

TextChanged 133 257 311

Textfeld 63

alles auswaumlhlen 142

Aumlnderung 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

Uumlbergabe

Ausgabeparameter 163

per Referenz 163 200

per Wert 162

Uumlberladen 196

Uumlberschreiben 197

Uumlberwachungsfenster 126

Uhrzeit 264

berechnen 266

UID 411

Umwandlung

in ganze Zahl 324

in Zahl 64

Und-Operator 54

Ungleich 53 384

Unterformular 242

Untermenuuml 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

4493book Seite 547 Mittwoch 8 Maumlrz 2017 112 13

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Index

548

ValueChanged

DateTimePicker 271

NumericUpDown 67

Schieberegler 91

Values

Dictionary 238

VALUES (SQL) 388

Variable 39

ausblenden 45

Guumlltigkeitsbereich 39

Kontrolle 126

Name 39

oumlffentlich 44

Startwert 46

Verbindung

Datenbank 376

Vererbung 211

Vergleichsoperator 384

Verkettung 198

Verknuumlpfung 360

erstellen 373

Verweis 191

auf Ereignismethode 205

auf Nichts 204

umwandeln 153 246

Verweistyp 163

Verzeichnis

Dateiliste 280

ermitteln 280

Existenz 280

Information uumlber 280

Liste 280

setzen 280

waumlhlen 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

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

Woumlrterbuch 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

X

X (Maus) 144

X Location 33

xClass 483

xName 484

XAML 481

mit Programmiercode 482

XML-Datei 287 512

XML-Knoten 288

4493book Seite 548 Mittwoch 8 Maumlrz 2017 112 13

Index

549

XmlNodeType 291

xmlns 483

XmlTextReader 291

XmlTextWriter 290

Y

Y (Maus) 144

Y Location 33

Year 264

Z

Zahlenauswahlfeld 66 257

Zeichen pruumlfen 274

Zeichenkette 247

durchsuchen 253

einfuumlgen 256

ersetzen 261

Index 250

Zeichenkette (Forts)

Laumlnge 248

loumlschen 258

mit Backslash 278

Teilzeichenkette 259

trimmen 250

zerlegen 251

Zeichenkodierung 417

Zeichnen 439

dauerhaft 449

Zeichnung

loumlschen 445

Zeile

lesen 274

Zeilenumbruch 37

Regeln 30

Zeit 264

Zeitgeber 59

Zeitintervall 267

Zufallsgenerator 96 146 455 468

Zuweisung 26

Zweidimensionale Grafik 491

4493book Seite 549 Mittwoch 8 Maumlrz 2017 112 13

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht

Thomas Theis

Einstieg in C mit Visual Studio 2017 ndash Ideal fuumlr Programmiereinsteiger549 Seiten broschiert 5 Auflage 2017 2990 Euro ISBN 978-3-8362-4493-0

wwwrheinwerk-verlagde4351

Wir hoffen sehr dass Ihnen diese Leseprobe gefallen hat Sie duumlrfen sie gerne emp-fehlen und weitergeben allerdings nur vollstaumlndig mit allen Seiten Bitte beachten Sie dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen koumlnnen Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschuumltzt Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag

Teilen Sie Ihre Leseerfahrung mit uns

Thomas Theis ist Diplom-Ingenieur fuumlr Technische Informatik und hat langjaumlhrige Erfahrung als IT-Dozent unter anderem an der Fachhochschule Aachen Er leitet Schulungen zu CC++ Vi-sual C Visual Basic sowie Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbuumlcher Einsteiger und Neulinge schaumltzen seine Faumlhigkeit auch komplizierte Sachverhalte leicht verstaumlndlich zu machen und dabei den Spaszlig am Programmieren nie aus den Augen zu verlieren

Wissen wiersquos geht