Go to file
Hollowpoint186 e9921a0260 Fixes 2021-03-17 21:46:29 +01:00
readme.md Fixes 2021-03-17 21:46:29 +01:00

readme.md

Fragenkatalog IT12/ AE, Schuljahr 2020/2021

Theorie: Windows Grundlagen:

  1. Welche Bedeutung hatte die Einführung grafischer Benutzeroberflächen für die Verbreitung von PCs?

    • Die PCs wurden damit für die Massen einfach zu benutzen und verbreiteten sich deshalb sehr gut seit es GUIs gibt
  2. Nennen Sie drei Merkmale von Windowsprogrammen!

    • Oft mit .NET, C++, C# programmiert
    • Benutzen die WindowsAPI
    • Alle Benutzereingaben werden zuerst von Windows abgefangen und dann an das Programm gesendet für das es bestimmt war
  3. Erläutern Sie den Unterschied zwischen einem Programm und einem Prozess!

    • Ein Prozess kann Bestandteil eines Programms sein, es ist die bestimmte Aufgabe, die ausgeführt wird
    • Ein Programm ist eine passive Entität, z.b. eine ausführbare Datei
    • Ein Programm ist eine Bündelung vieler Prozesse um Funktionalität zu bieten
  4. Was versteht man unter einer „Instanz eines Programms“?

    • Jedes mal beim ausführen eines Programms, wird eine "Instanz" des Programms gestartet
    • Beispielsweise: Visual Studio 2x öffnen => 2 voneinander unabhängige Instanzen von Visual Studio laufen
  5. Beschreiben Sie die Aufgaben des Windows Betriebssystems, wenn eine neue Anwendung gestartet wird!

    • zuerst wird in WinMain eine Fensterklasse während der Initialisierung erstellt
    • Fensterklasse (als Structure vordefiniert) muss mit Infos zum Fenster und zu der Fensterfunktion gefüllt werden
    • Fenster wird mit CreateWindow() erzeugt und mit ShowWindow() angezeigt
    • UpdateWindow() aktualisiert die Anzeige
  6. Beschreiben Sie die Aufgaben des Windows Betriebssystems, wenn eine Anwendung geschlossen wird!

    • Benutzereingabe bekommt einen Eintrag in der Application-Queue
    • Message Loop verarbeitet die Eingabe
    • Windows wird angewiesen die Logik zur Programmbeendung auszuführen (Fenster schließen, Programminstanz beenden, Speicher freigeben...)
  7. Weshalb können unterschiedliche Anwendungen in Win32 nicht über Zeiger auf die gleiche Speicheradresse miteinander kommunizieren?

    • Weil jeder Prozess seinen eigenen „Speicherraum“ besitzt und nicht auf Speicher eines anderen Prozesses zugreifen kann (Sandbox)
  8. Welche Vorteile bieten multithreadingfähige Systeme?

    • Abarbeitung mehrer Prozesse „gleichzeitig“
    • „schneller“ (Effektiver Einsatz der CPU)
    • Schnelle (low-latency) Kommunikation zwischen mehreren Prozessen eines Programms

    --> https://docs.oracle.com/cd/E19455-01/806-3461/6jck06gqj/index.html --> https://zone.ni.com/reference/de-XX/help/371361R-0113/lvconcepts/benefits_multi_apps/

  9. Unterschied zwischen kooperativem und Preemptivem Multitasking?

    Kooperatives Multitasking: - gibt die volle CPU-Kontrolle an den auszuführenden Prozess ab und erhält sie erst nach erfolgreicher abarbeitung des Prozesses wieder. (Crash-Problem z.B. unter DOS)

    Preemptives Multitasking: - System kann jederzeit (nach Ausführung jedes CPU-Befehls) die Kontrolle über die CPU entziehen

  10. Warum können „abgestürzte“ DOS-Programme das ganze OS Lahmlegen?

    • wegen kooperativem Multitasking, das die volle Kontrolle der CPU an den Prozess abgibt
  11. Abarbeitung einer Tastatureingabe über die Message Loop:

	1. User drückt Taste
	2. Eintrag des Ereignisses in die System-Queue
	3. Eintrag in die Application-Queue
	4. Message Loop verarbeitet das Ereignis
	5. Windows wird angewiesen, die Fensterfunkton aufzurufen
	6. Fensterfunktion reagiert auf die Tastatureingabe
  1. Welche Aufgabe erfüllt die Fensterfunktion WinProc()?

    Eine Art Event-Handler des Fensters der die eingehenden Botschaften empfängt und verarbeitet

    • Z.B. die Botschaft WM_DESTROY -> Fenster schließen
    • jedes Fenster definiert seine eigene Fensterfunktion
  2. Beschreiben Sie den grundsätzlichen Aufbau einer Fensterfuktion unter Win32?

    • Switch-Case mit verschiedenen Cases um die übergebenen Events zu verarbeiten
  3. Bedeutung von Botschaften in ereignisgesteuerten Systemen

    • Eventlistener greifen die Botschaften auf und entscheiden dann anhand der Botschaft den weiteren Ablauf des Programms/Prozesses
  4. Nennen Sie vier Schnittstellen für Windows - Programmierer und deren spezielles Anwendungsgebiet?

    • WinInet - Windows Internet API
    • GDI - Graphics Device Interface
    • WinSock - API zum Zugriff auf Rechnernetz über Sockets
    • TAPI - Telephone API (Fax, ...)
    • COM-API - Für den Zugriff auf COM Schnittstellen
  5. Welche Bedeutung hat die API für den Programmierer?

    • Eine API bietet den Zugriff auf bestimmte vorgefertigte Funktionen an
    • z.b. die CoinAPI zum Abgreifen von Kryptowährungs-Daten
  6. Erläutern Sie, welches Wissen ein Windows - Anwendungsentwickler zusätzlich zur Kenntnis der Programmiersprache benötigt

    • Windows API
    • Fensterfunktion
    • Message Loop
    • .NET
    • COM
  7. Die vier Parameter der WinMain()

	HINSTANCE hInstance,     /* handle to current instance */
  	HINSTANCE hPrevInstance, /* handle to previous instance */
  	LPSTR lpCmdLine,         /* pointer to command line */
  	int nCmdShow             /* show state of window */
  1. Die Windows API Fensterklasse:

    • wird zum Beschreiben/Stylen des Fensters benutzt
  2. Die Inhalte der Windows Fensterklasse

	- style 			Style des Fensters
	- lpfnWndProc		Zeiger auf die Fensterfunktion (WndProc())
	- hInstance			Handle zur jetzigen Instanz
	- hCursor			Handle zu einer Cursor-Resource für Mouse-Moves 
	- hbrBackground		Hintergrundfarbe des Fensters
	- lpszClassName		Pointer zum Klassennamen oder einem Alias dafür

Grundlagen des .NET Frameworks 21. Zweck der Common Language Runtime

    - Die CLR übersetzt den MSIL-Code in nativen Code
    - Memory Mangement
    - Code Access security
    - Garbage Collection
    - JIT Compilation
    - Exception Handling 
  1. Wozu dient Garbage Collection

    • löscht nicht mehr benötigte Objekte/Zeiger zur Laufzeit
    • befreit Speicher vom Prozess und beugt somit Memory Leaks vor
  2. Weg vom Quellcode zur Ausführung in .NET

    • Umwandlung des Code in MSIL
    • Hinzufügen von Metadaten (wird in der gleichen Datei gespeichert)
    • Vor der Ausführung wird MSIL durch den JIT Compiler der CLR in nativen Code übersetzt

    Logische Schritte: Compilation ---> Execution Source-Code -> Language-Compiler -> MSIL + Metadaten -> JIT Compiler -> Native Code

  3. Zweck der MSIL hinsichtlich hinsichtlich Programmiersprachen übergreifender Entwicklung von Software

    Um möglichst viele Programmiersprachen/Techniken zu unterstützen wird der Code in MSIL als Zwischen- sprache übersetzt.

    • Da gewisse Teile des .NET Framework offen sind, ist es Drittherstellern möglich eigene Compiler für ihre Programmiersprache zu erstellen
    • Somit können in der Theorie alle Programmiersprachen, welche die Vorgaben von MSIL (definiert in CLR) einhalten
  4. Unterschied Klassenbezeichnung und Namensraum

    Klassenbezeichnung:

    Die Klassenbezeichnung ist der Name einer Klasse, die Klasse wird anhand der Klassenbezeichnung im Quellcode als Objekt instanziiert.

    Namensraum:

    Ein Namensraum (engl. Namespace) ist ein Raum, der mehrere mehrere Klassen in ein Paket zusammenfasst, um im Code Struktur und Ordnung zu gewährleisten. Diese Namensräume können somit importiert werden um gewisse Teile des Codes voneinander abzugrenzen.

  5. Zugriff auf eine bestimmte Klasse in einem Namensraum

    • Anhand des Schlüsselworts "using" wird ein Namespace im Code eingebunden
    • Auf die Klasse wird dann zugegriffen, wenn ein neues Objekt aus ihr instanziiert wird

    Beispiel:

    Import des Namespace: using System.IO.File;

    Instanziierung der Klasse als Objekt: File datei = new File();

  6. Basisklasse aller .NET Klassen

    • Object
  7. Zwei Arten von Datentypen unter .NET

    • Char
    • Ganzzahl (int)
  8. Unterschied zwischen Reference- und Value-Types

    • Ein Value-Type ist ein Datentyp, der die Werte direkt speichert
    • Ein Reference-Type speichert nicht direkt Werte, sondern speichert die Adresse des Wertes im Arbeitsspeicher z.B. Pointer oder String
  9. Was ist Boxing/Unboxing

    • Beim Boxing wird ein Child-Objekt in sein Parent-Objekt umgewandelt
    • Beim Unboxing wird ein Parent-Objekt in eines seiner Child Objekt umgewandelt

    Beispiel: int i = 1; object o = i; // boxing int j = (int)o; // unboxing

  10. Zweck der CLS

    • Die CLS definiert die Regeln die von jeder Sprache im .NET Framework befolgt werden müssen
    • Die Sprachen, die CLS befolgen sind CLS Compliant -> CLS ermöglicht die Integration und Interoperabilität mehrerer Programmiersprachen im selben Projekt
  11. Arten von Assemblies

    • Private assembly (.dll and .exe are at the same place)
    • Shared assembly(.dll and .exe are at different places)
    • Dynamic assembly (dynamically create)
    • Distributed assembly (in different parts)
    • Satellite assembly (on the network)
  12. Was ist der Global Assembly Cache

    • Der GAC ist ein Verfahren des .NET Frameworks um Versionskonflikte in Programmen vorzubeugen
    • Speichert alle Assemblies mit Name, Versionsnummer und einzigartigem Token -> das gleiche Assembly kann mehrere Male gespeichert werden
  13. Welche Informationen sind in einer Assembly gespeichert

    • Name
    • Versionsnummer
    • Token
  14. Was ist Side By Side Installation

    • Mehrere Installationen des selben Assemblies
  15. Was ist Probing im .NET Framework

    • Gibt Anwendungen das Basisverzeichnis für die Common Language Runtime an, die beim Laden des Assembly gesucht werden soll

ADO.NET

  1. Connected <> Disconnected Modell
    Connected:
    
    - Beständige Verbindung zur Datenbank
    - Daten sind immer aktuell
    - DataReader versichert die beständige Verbindung
    - Mehr Netzwerkauslastung beim Server
    
    Disconnected:
    
    - Verbindung zur Datenbank nur bei Zugriff
    - mehr Auslastung beim Client, da Daten im Arbeitsspeicher 
    - Benutzen von DataSet beim Datenbankzugriff
  1. DataProvider und DataSet aus ADO.NET
    DataProvider:
        - wird zum Herstellen der Verbindung mit einer Datenbank benutzt
        - führt Befehle auf der Datenbank aus
        - wird im Connected Modell benutzt um Daten aus der Datenbank zu lesen/schreiben
    
    DataSet:
        - Kommt beim Disconnected Modell zum Einsatz
        - Bildet die Datenbank ab
        - Dient als Lokaler Speicher der Datenbank auf dem Client
        - ist als Cache für die Daten zu betrachten
  1. Nachteile der OLE-DB und ODBC.NET DataProvider

    - Langsamer als native Datenbanktreiber
    - benötigt mehr CPU-Ressourcen
    - weitere Schicht zwischen Programm und Datenbank -> höhere Fehleranfälligkeit
    - Viele OLE und ODBC Treiber in .NET stammen aus der COM zeit und sind veraltet
    
  2. Vor- und Nachteile des Connected- bzw Disconnected Modells

    Connected:
        Vorteile:
            - Daten sind immer aktuell
            - Einfachere Wartung
        Nachteile:
            - Mehr Netzwerkauslastung beim Server
            - Ständige Netzwerkverbindung erforderlich
            
    
    Disconnected:
        Vorteile:
            - Keine Ständige Netzwerkverbindung erforderlich
            - Weniger Netzwerkauslastung
            - Skalierbarkeit und Performance
        Nachteile:
            - Daten sind nicht aktuell
            - Daten müssen beim Client im Arbeitsspeicher abgelegt werden
            - Konkurrierende Zugriffe 
  1. Einsatzbeispiele von Disconnected- und Connected Modells:
    Connected:
        - Warenwirtschaftssystem
        - Büro/Office Umgebungen
        
    Disconnected:
        - Smartphone Apps
        - Außendienstmitarbeiter 
  1. Aufgaben des Connection Objects, Command Objects, Parameter Objects und des DataReader Objects
    Connection Object:
        - stellt eindeutige Verbindung/Sitzung zum Datenbankserver/Datenquelle dar
        - Verbindung mit Server
        
    Command Object:
        - eine SQL-Anweisung oder gespeicherte Prozedur die in einer Datenbank ausgeführt werden soll
        
    Parameter Object:
        - SQL-Injection Mitigation
        - damit kann man parameterisierte Abfragen erstellen, die WHERE statements obsolet machen
        
    DataReader Object:
        - stellt Verfahren zum Lesen eines Vorwärtsstreams von Zeilen in einer Datenbank bereit
  1. Einschränkungen beim benutzen eines DataReaders:

    • ReadOnly / ForwardOnly Zugriff
    • nur für schnelles, einmaliges Lesen geeignet
  2. Zusammenarbeit von DataAdapter, DataSet und DataTables im Disconnected Modell:

    - DataAdapter verfügt über SELECT command - Object welches Daten aus der DB holt
    - die Fill-Methode des DataAdapter erwartet als Parameter ein DataSet 
      und einen Namen für das zu erstellende DataTable Objects
    - erzeugung im jeweils übergebenen DataSet ein DataTable Object
    - beim Update der DB wird je nach Änderung das INSERT, UPDATE oder DELETE Command des DataAdapters aufgerufen
    - DataAdapter stellt das Bindeglied zwischen DataSet Tabelle und DB dar
    - pro DataTable eines DataSets gibt es idR. einen DataAdapter
  1. Die 4 Command Objecte eines DataAdapters

    SELECT Command-Object: - Lesen von Daten aus der DB UPDATE Command-Object: - Ändern von Datensätzen INSERT Command-Object: - Einfügen neuer Datensätze DELETE Command-Object: - Löschen von Daten

  2. Collections und Objekte eines DataSets

    • Tables
    • Columns
    • Constraints
    • Rows
    • Relations

SEE SHARP PROGRAMMIERUNG

  1. Abfangen von Ereignissen unter C#

    • Eventhandler registrieren um auf Ereignisse zu reagieren
    • Delegate Prinzip (objektorientierte Variante von Methodenzeigern)
  2. Eventhandling unter .NET am Beispiel eines Klicks auf einen Button

                    EVENT(click)
    

    Button BtnBeispiel -> Delegate -> Handler-Methode

  3. Syntax von c# Eventhandling unter .NET

    BtnBeispiel.click() += new System.EventHandler(BtnBeispiel_Click);

    private void BtnBeispiel_Click(object sender, System.EventArgs e) { // do Button shit }

  4. Parameter einer Handler - Methode:

        Object sender:
            - der sender des Events (der Button in unserem Beispiel)
            - Komplettes Button Objekt inkl seiner Eigenschaften usw.

        System.EventArgs e:
            - Eigenschaften des Events
            - z.B.: Koordinaten des Klick Events f
  1. Events eines Windows Forms:

    • Click
    • FormClosing
    • Touch
  2. Parameter der Show Methode von MessageBox

    - owner         | Implementierung von IWin32Window, wird Besitzer des Dialogfeldes
    - text          | Text im Fenster
    - caption       | Titel in der Fensterleiste
    - buttons       | Ja/Nein/Abbrechen etc. buttons
    - icon          | Symbol im Meldungsfenster
    - defaultButton | Standardbutton von buttons 
    - options       | Anzeige- und Zuordnungsoptionen
    - helpFilePath  | Pfad für die Hilfedatei, wenn auf "Hilfe" geklickt wird
    - keyword       | Hilfestichwort 
  1. Einsatz der FileSystemWatcher Komponente

    • Überwachung von Dateien bzw. Ordnerstrukturen
    • Löst ein Ereignis aus bei Änderungen

    -> Übergabe von verschiedenen Eventhandlern an den FileSystemWatcher Beispielsweise Changed, Created, Deleted, Renamed

  2. Eigenschaften und Methoden eines Exception Objekt

    - Das Exception Objekt wird in try - catch Blöcken verwendet 
      und wird zum Behandeln von Ausnahmen in der Programmlogik verwendet

    Eigenschaften:
    - Stacktrace
    - Message
    
    Methoden:
    - GetBaseException  | Gibt Exception zurück bei einem von Exception abgeleitetem Objekt wie z.B. IOException
    - GetObjectData     | Setzt die SerializationInfo 
    - GetType           | Gibt den Typ der Exception zurück wie z.B. IOException
    - ToString          | Gibt die Exception Message als String zurück
  1. Exception Handling Erklärung

    • Mit try - catch kann man eine Exception abfangen
    • Im try Block ist der Code, der möglicherweise eine Ausnahme auslöst und wird in catch abgefangen
    • Der catch Block wird üblicherweise zum Logging der Exception verwendet, oder die Exception wird weiterverarbeitet
    • mit throw new Exception() kann man absichtlich eine Exception auslösen
  2. Eigene Exception erstellen

  • Klasse von Exception (oder abgeleiteter Exception Klasse) ableiten
  • Konstruktor der Basisklasse für die Fehlermeldung nutzen

public class myException: System.Exception { public myException():base(“Spezielle Fehlermeldung”) { ... } }

  1. Vorteile des Structured Exception Handling

    • Trennung von Programm und Fehlerlogik
    • genaue Fehlerbeschreibung inkl Zusatzinformationen
    • abfangen mehrerer Exceptions möglich
  2. Serialisierung/Deserialisierung

    Unter Serialisierung versteht man das Speichern eines Objektes auf einem beständigen Speichermedium und das Wiederherstellen des Objektes anhand seiner Daten im Programm.
    (Deserialisierung)

    -> https://stackoverflow.com/questions/3042665/what-is-the-meaning-of-serialization-in-programming-languages
  1. Unterschiede zwischen Binary und XML Serialisierung

    XML:

    • Overhead durch XML Tags
    • lesbarer Code -> flexibel
    • nur public Elemente werden serialisiert

    Binary:

    • schnell lesbar, klare Datei
    • Binärformat ist unflexibel
    • private Elemente werden mitserialisiert
  2. Erstellung einer serialisierten Klasse

[Serializable] public class SerializableClass { public int Aersche = 15; public int x = 0; public String str = null; }

  1. Umsetzung der binären Serialisierung | https://www.guru99.com/c-sharp-serialization.html

    • Serializable Klasse erstellen
    • Objekt von Serializable Klasse erstellen und den Attributen Werte zuweisen
    • BinaryFormatter erstellen
    • Beispielszenario: Stream öffnen zum Lesen der Datei die serialisiert werden soll
    • Mit BinaryFormatter.Serialize eingelesenen Stream und Serializable Objekt serialisieren
    • Stream schließen mit .Close()
  2. Implementierung von XML Serialisierung

    MyClass obj1 = new MyBeispiel( );
    XmlSerializer s = new XmlSerializer(typeof(MyBeispiel));
    FileStream fs;

    // Serialisieren
    fs = new FileStream(@"C:\test.txt", FileMode.Create);
    s.Serialize(fs, obj1);
    fs.Close( );

    // Deserialisierung
    fs = new FileStream(@"C:\test.txt", FileMode.Open);
    MyClass obj2 = (MyClass) s.Deserialize(fs);
    fs.Close( );
  1. DataBindingSource Objekt

    Die BindingSource Komponente dient vielen Zwecken. Das Binden von Steuerelementen in einem Formular an Daten wird vereinfacht, indem Währungsverwaltung, Änderungs Benachrichtigung und andere Dienste zwischen Windows Forms Steuerelementen und Datenquellen bereitgestellt werden.

    DataSetTabelle --- DataBindingSource Objekt --- Steuerelement

  2. Simple und Complex Binding von Steuerelementen

    Beim simple binding bindet man nur eine Eigenschaft an einen Datensatz (z.B. die Text-Property eines Textfeldes an den Namen des Personenobjekts). Verwendet man das complex binding, so werden mehrere Datensätze an ein Steuerelement gebunden (z.B. alle Daten mehrerer Datensätze an ein DataGrid oder alle Namen an eine ComboBox).

  3. BindingNavigator Objekt

    The BindingNavigator control represents a standard way to navigate and manipulate data on a form. It is a special-purpose ToolStrip control for navigating and manipulating controls on the Windows Form.

    In most cases, a BindingNavigator is combined with a BindingSource control to move through data records on a Windows Form. It is easy to modify the BindingNavigator component if you want to add additional or alternative commands for the user.

    A BindingNavigator is:

    • a VCR (video-cassette recorder) control which is used with BindingSource.
    • based on ToolStrip.
    • extensible and pluggable.
  4. Zweck einer DAO Klasse

DAO - Klasse    (Data Access Object):
    - Entwurfsmuster das den Zugriff auf unterschiedliche Arten von Datenquellen
    - Muster für die Gestaltung von APIs
    - Datenadapter der Applikation
    - speichert z.b. Daten in einer privaten List Collection
    - ist für die Serialisierung und Deserialisierung zuständig
    - meist werden Methoden wie SaveData() ausprogrammiert

    ->  Data Access Object Klassen kapseln die Serialisierung/ Deserialisierung von Objekten.
        Programmlogik und Datenverwaltung sind getrennt!
  1. Aufgabe des Gerätekontextes beim Druck in C#

    • Graphics Eigenschaft der Klasse PrintPageEventArgs
    • Informiert den Drucker welche Art von Grafiken gedruckt werden
    private void printDocument1_PrintPage(object sender,
    System.Drawing.Printing.PrintPageEventArgs e)  
    {  
           e.Graphics.FillRectangle(Brushes.Blue,
             new Rectangle(100, 150, 250, 250));  
    } 
Der Gerätekontext stellt eine einheitliche Schnittstelle zur Ausgabe von Daten auf Ausgabegeräte
bereit („virtuelle Zeichenleinwand“). Somit wird eine hardwareunabhängige Ausgabelogik im
Programm möglich.
  1. Warum funktioniert die Druckvorschau ohne installierten Drucker nicht?

    Weil kein Druckertreiber verfügbar ist.

  2. Prinzipieller Druckvorgang unter C#

    Druckvorgang: SIEHE "Zusammenfassung zum Adressbuch3 TA.pdf"

    1 PrintDocument Object erzeugen

    	 PrintPage Event -> Handler-Methode für Drucklogik
     		PrintPageEventArgs:
    		PageSettings Property des PrintDocuments (Seiteneinstellungen)
     		Graphics Object (Device Context)
     		HasMorePages Property (true setzen, wenn noch weitere Seiten gedruckt werden sollen…)```
    2 Seitenränder setzen
    	-> PageSattings Objekt -> Margins… (Left, Rightt, Top, Bottom) setzen.
    3 Bedruckbaren Bereich ermitteln
    	-> PrintPageEventArgs e -> MarginBounds… (Left, Rightt, Top, Bottom) nutzen.
    
    4 Schriftarten erstellen 
    	-> Im .NET Framework nutzt man die Font Klasse zum Erstellen von Schriften:
    		```
    		Font headerFont = new Font ("Arial",18, FontStyle.Bold);
    		```
    
    5 Schriftarten messen zur Positionsberechnung
    	-> Über das Graphics Objekt können Schriften gemessen werden.
    	    MeasureString(String text, Font font)… (Width, Height)
    
    	    ```
    	    float headerWidth = g.MeasureString(header, headerFont).Width;
    	    ```
    
    6 DrawString(...) des Graphics Objects
    	-> Zeichnet einen String an die angegebene Position auf den Device Context.
    		```
    		g.DrawString(text, schrift, brush, xPosition, yPosition);
    		```
    
    
    
  3. Welche Elemente sind in PrintPageEventArgs

    Eigenschaften:

    • Cancel
    • Graphics
    • HasMorePages
    • MarginBounds
    • PageBounds
    • PageSettings

    Methoden:

    • Equals(Object)
    • GetHashCode()
    • GetType()
    • MemberwiseClone()
    • ToString()
  4. Benutzerdialoge zur Druckunterstützung

    • PrintDialog
    • PrintPreviewDialog
    • PageSetupDialog
  5. Einrichten von Seitenränder

    Seitenränder setzen -> PageSettings Objekt -> Margins… (Left, Right, Top, Bottom) setzen

  6. Vorgehensweise zum Ermitteln des bedruckbaren Bereichs

    Bedruckbaren Bereich ermitteln -> PrintPageEventArgs e -> MarginBounds… (Left, Right, Top, Bottom) nutzen

  7. Initialisierung einer Schriftart

    Schriftarten erstellen -> Im .NET Framework nutzt man die Font Klasse zum Erstellen von Schriften: Font headerFont = new Font ("Arial",18, FontStyle.Bold);

  8. Höhe und Breite eines Textes zur Textpositionierung berechnen

    • Graphics.MeasureString() verrechnet Font mit String ->This method returns a SizeF structure that represents the size, in the units specified by the PageUnit property, of the string specified by the text parameter as drawn with the font parameter.
  9. DrawString Funktionsweise

    Draws the specified text string at the specified location with the specified Brush and Font objects.

    Parameter:
    String s    | String der gezeichnet werden soll
    Font font   | Text Format des Strings
    Brush brush | Farbe und Textur des gezeichneten Text
    Single x    | x Koordinate des Text
    Single y    | Y Koordinate des Text

Legende:

- MSIL : Microsoft Intermediate Language (auch CIL - Common Intermediate Language)
- CLR  : Common Language Runtime
- CLS  : Common Language Specification
- JIT  : Just in Time
- COM  : Component Object Model
- DAO  : Data Access Object