Wichtiger Code für Windows Forms-Dialogfelder

Veröffentlicht: 11. Mai 2002 | Aktualisiert: 20. Jun 2004

Von Seth Grossman

Das .NET Framework enthält Klassen, die häufig in Windows-Anwendungen verwendete Dialogfelder repräsentieren. Allerdings sind die Hauptfunktionen eines Dialogfelds, d.h. OpenFileDialog (Öffnen einer Datei) und SaveFileDialog (Speichern einer Datei), oftmals nicht in der Klasse implementiert. In diesem Dokument werden die für die Implementierung dieser Funktionen notwendigen Schritte erläutert.

Auf dieser Seite

Einführung Einführung
"OpenFileDialog"-Komponente "OpenFileDialog"-Komponente
"SaveFileDialog"-Komponente "SaveFileDialog"-Komponente
"ColorDialog"-Komponente "ColorDialog"-Komponente
"FontDialog"-Komponente "FontDialog"-Komponente
"PrintDocument"-Klasse "PrintDocument"-Klasse
"PrintDialog"-Komponente "PrintDialog"-Komponente
"PageSetupDialog"-Komponente "PageSetupDialog"-Komponente
"PrintPreviewDialog"-Steuerelement "PrintPreviewDialog"-Steuerelement
Schlussfolgerung Schlussfolgerung

Einführung

Die Windows Forms-Dialogfeldkomponenten sind identisch mit den Dialogfeldern, die im Betriebssystem Microsoft Windows verwendet werden. Die PrintDialog-Komponente entspricht dem Dialogfeld Drucken, die OpenFileDialog-Komponente entspricht dem Dialogfeld Öffnen usw.

Ähnlich wie bei früheren Systemen zur Windows-Programmierung und Microsoft Visual Basic 6.0 bietet das .NET Framework eine Reihe von Dialogfeldern, die den Windows-Benutzern sofort vertraut erscheinen. Oftmals gibt es eine Reihe von Möglichkeiten, die Funktionen eines Dialogfelds zu implementieren, z.B. das Drucken einer Datei mit dem Dialogfeld Drucken. Das heiß;t, der Mechanismus zur Ausführung der Aufgabe (Datei drucken, Farbe auswählen) ist nicht als Teil der Klasse implementiert. Dies bietet Ihnen die Möglichkeit, die Funktion so zu implementieren, dass sie den Anforderungen der Anwendung entspricht. Mit dem .NET Framework können Sie Standarddialogfelder anzeigen, aber Sie entwickeln die Logik, nach der die Dialogfelder auf eine Benutzerauswahl reagieren. Dieser Artikel enthält Beispiele zur Programmierung der einzelnen Komponentenaufgaben.

Anmerkung Eine vollständige Liste der Eigenschaften, Methoden und Ereignisse der einzelnen Dialogfeldkomponenten finden Sie auf der Seite Members der entsprechenden Komponentenklasse. Wenn Sie beispielsweise nach den Methoden suchen, die mit der OpenFileDialog-Komponente verknüpft sind, sehen Sie im Indexeintrag "OpenFileDialog-Klasse, Alle Member" nach, um zum entsprechenden Thema zu gelangen.

 

"OpenFileDialog"-Komponente

Dieses Dialogfeld ermöglicht es dem Benutzer, Ordner auf dem eigenen Computer oder auf anderen Computern im Netzwerk zu durchsuchen und Dateien zu öffnen. Das Dialogfeld gibt den Pfad und den Namen der Datei zurück, die der Benutzer im Dialogfeld ausgewählt hat.

Die OpenFileDialog-Komponente (ebenso wie die im Folgenden behandelte SaveFileDialog-Komponente) stellt alle Funktionen bereit, die erforderlich sind, um das Dateisystem zu durchsuchen und Dateien auszuwählen. Diese Komponenten ersparen Ihnen das Programmieren dieser Funktionen, so dass Sie sich auf das Öffnen und Speichern der Dateien konzentrieren können.

Anmerkung Beachten Sie, dass die FilterIndex-Eigenschaft der FileDialog-Klasse (die aufgrund der Vererbung Teil der OpenFileDialog- und der SaveFileDialog-Klasse ist) einen auf Eins basierenden Index verwendet. Diese Eigenschaft wird in einigen der folgenden Codebeispiele verwendet (an den entsprechenden Stellen erfolgt ein Hinweis). Dies ist wichtig, wenn Sie Code schreiben, der eine bestimmte Anwendung aufgrund des Dateitypfilters öffnet, oder wenn Sie Daten in einem bestimmten Format speichern (z.B. im Nur-Text-Format anstatt im Binärformat). Denken Sie daran, wenn Sie Code schreiben, der die FilterIndex-Eigenschaft verwendet.

Im nachfolgenden Code wird zum Öffnen einer Instanz der OpenFileDialog-Komponente der Click-Ereignishandler des Button-Steuerelements verwendet. Nachdem der Benutzer eine Datei ausgewählt und auf OK geklickt hat, wird die im Dialogfeld ausgewählte Datei geöffnet. In diesem Fall wird die Datei in einem Nachrichtenfeld geöffnet, um zu zeigen, dass der Dateistream gelesen wurde.

Im Beispiel werden ein Button-Steuerelement mit der Bezeichnung Button1 sowie eine OpenFileDialog-Komponente mit der Bezeichnung OpenFileDialog1 verwendet.

' Visual Basic
' ANMERKUNG: Importieren Sie folgenden Namespace:
' Imports System.IO
' Ohne die Importanweisung am Anfang
' des Codes funktioniert das Beispiel nicht.
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
   If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
     Dim sr As New StreamReader(OpenFileDialog1.FileName)
     MessageBox.Show(sr.ReadToEnd)
     sr.Close()
   End If
End Sub

// C#
 // ANMERKUNG: Importieren Sie folgenden Namespace:
// using System.IO;
// Ohne die Importanweisung am Anfang
// des Codes funktioniert das Beispiel nicht. 
private void button1_Click(object sender, System.EventArgs e)
{
   if(openFileDialog1.ShowDialog() == DialogResult.OK)
   {
     StreamReader sr = new StreamReader(openFileDialog1.FileName);
     MessageBox.Show(sr.ReadToEnd());
     sr.Close();
   }
}

Die Datei kann auch mit der OpenFile-Methode der OpenFileDialog-Komponente geöffnet werden. Diese gibt die Bytes zurück, aus denen sich die Datei zusammensetzt. Im folgenden Beispiel wird eine OpenFileDialog-Komponente instanziiert, der ein "Cursor"-Filter zugewiesen wurde, so dass der Benutzer lediglich Cursordateien auswählen kann (Dateien mit der Endung cur). Wird eine cur- Datei ausgewählt, wird der Cursor des Formulars auf den gewählten Cursor umgeschaltet.

Im Beispiel wird ein Button-Steuerelement mit der Bezeichnung Button1 verwendet.

' Visual Basic
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
' OpenFileDialog anzeigen, damit der Benutzer einen Cursor auswählen kann.
    Dim openFileDialog1 As New OpenFileDialog()
   openFileDialog1.Filter = "Cursordateien|*.cur"
   openFileDialog1.Title = "Cursordatei wählen"

   ' Dialogfeld anzeigen.
   ' Wenn der Benutzer im Dialogfeld auf OK geklickt und 
   ' eine .CUR-Datei gewählt hat, diese Datei öffnen.
   If openFileDialog1.ShowDialog() = DialogResult.OK Then
     If openFileDialog1.FileName <> "" Then
     ' Cursor im Stream zur Cursor-Eigenschaft des Formulars zuweisen.
       Me.Cursor = New Cursor(openFileDialog1.OpenFile())
     End If
   End If
End Sub
// C#
private void button1_Click(object sender, System.EventArgs e)
{
// OpenFileDialog anzeigen, damit der Benutzer einen Cursor auswählen kann.
   OpenFileDialog openFileDialog1 = new OpenFileDialog();
   openFileDialog1.Filter = "Cursordateien|*.cur";
   openFileDialog1.Title = "Cursordatei auswählen";

   // Dialogfeld anzeigen.
   // Wenn der Benutzer im Dialogfeld auf OK geklickt und
   // eine .CUR-Datei ausgewählt hat, diese Datei öffnen.
   if (openFileDialog1.ShowDialog() == DialogResult.OK)
   {
     if(openFileDialog1.FileName != "")
     {
       // Cursor im Stream zur Cursor-Eigenschaft des Formulars zuweisen.
       this.Cursor = new Cursor(openFileDialog1.OpenFile());
     }
   }
}

Weitere Informationen zum Lesen von Dateistreams finden Sie unter FileStream.BeginRead Method (in Englisch).

 

"SaveFileDialog"-Komponente

Mit diesem Dialogfeld können Benutzer das Dateisystem durchsuchen und die Dateien auswählen, die gespeichert werden sollen. Zum Schreiben der Dateien wird jedoch noch eine Codeanweisung benötigt.

Im nachfolgenden Code wird zum Öffnen einer Instanz der SaveFileDialog-Komponente der Click-Ereignishandler des Button-Steuerelements verwendet. Nachdem der Benutzer eine Datei ausgewählt und auf OK geklickt hat, wird der Inhalt des RichTextBox-Steuerelements des Formulars in der im Dialogfeld ausgewählten Datei gespeichert.

Im Beispiel werden ein Button-Steuerelement mit der Bezeichnung Button1, ein RichTextBox-Steuerelement mit der Bezeichnung RichTextBox1 sowie eine SaveFileDialog-Komponente mit der Bezeichnung OpenFileDialog1 verwendet.

' Visual Basic 
' ANMERKUNG: Importieren Sie folgenden Namespace:
' Imports System.IO
' Ohne die Importanweisung am Anfang
' des Codes funktioniert das Beispiel nicht.
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
   If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
     RichTextBox1.SaveFile(SaveFileDialog1.FileName, _
     RichTextBoxStreamType.PlainText)
   End If
End Sub

// C# 
// ANMERKUNG: Importieren Sie folgenden Namespace:
// using System.IO;
// Ohne die Importanweisung am Anfang
// des Codes funktioniert das Beispiel nicht.
private void button1_Click(object sender, System.EventArgs e)
{
   if((saveFileDialog1.ShowDialog() == DialogResult.OK)
   {
     richTextBox1.SaveFile(saveFileDialog1.FileName, 
ichTextBoxStreamType.PlainText);
   }
}

Sie können eine Datei auch mit der OpenFile-Methode der SaveFileDialog-Komponente speichern. Dadurch erhalten Sie ein Stream-Objekt, in das Sie schreiben können.

Im folgenden Beispiel finden Sie ein Button-Steuerelement, dem ein Bild zugewiesen ist. Wenn Sie auf die Schaltfläche klicken, wird eine SaveFileDialog-Komponente mit einem Filter instanziert, der GIF-, JPEG- und BMP-Dateien zulässt. Wird eine solche Datei im Dialogfeld Datei speichern gewählt, wird das Bild der Schaltfläche gespeichert.

Im Beispiel wird ein Button-Steuerelement mit der Bezeichnung Button2 verwendet, dessen Image-Eigenschaft auf die Dateitypen .gif, .jpeg oder .bmp gesetzt ist.

''Visual Basic
 ANMERKUNG: Importieren Sie folgende Namespaces:
' Imports System.IO
' Imports System.Drawing.Imaging
' Ohne diese Importanweisungen am Anfang des Codes
' funktioniert das Beispiel nicht. <
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
   ' SaveFileDialog anzeigen, damit der Benutzer das Bild speichern kann,
   ' das Button2 zugewiesen ist.
   Dim saveFileDialog1 As New SaveFileDialog()
   saveFileDialog1.Filter = "JPEG-Bild|*.jpg|Bitmap-Bild|*.bmp|GIF-Bild|*.gif"
   saveFileDialog1.Title = "Bilddatei speichern"
   saveFileDialog1.ShowDialog()
          ' Wenn der Dateiname keine leere Zeichenkette ist, Datei zum Speichern öffnen.
   If saveFileDialog1.FileName <> "" Then
     ' Bild mit einem von der OpenFile-Methode erstellten FileStream speichern.
     Dim fs As FileStream = CType(saveFileDialog1.OpenFile(), FileStream)
     ' Bild im entsprechenden ImageFormat basierend auf dem im Dialogfeld
     ' gewählten Dateityp speichern. 
     ' BEACHTEN Sie, dass die FilterIndex-Eigenschaft auf Eins basiert.
     Select Case save FileDialog1.FilterIndex
       Case 1
          Me.button2.Image.Save(fs, ImageFormat.Jpeg)

       Case 2
          Me.button2.Image.Save(fs, ImageFormat.Bmp)

       Case 3
          Me.button2.Image.Save(fs, ImageFormat.Gif)
     End Select

     fs.Close()
   End If
End Sub

// C#
// NOTE: Importieren Sie folgende Namespaces:
// using System.IO;
// using System.Drawing.Imaging;
// Ohne diese Importanweisungen am Anfang des Codes
// funktioniert das Beispiel nicht.
private void button2_Click(object sender, System.EventArgs e)
{
   // SaveFileDialog anzeigen, damit der Benutzer das Bild speichern kann,
   // das Button2 zugewiesen ist.
   SaveFileDialog saveFileDialog1 = new SaveFileDialog();
   saveFileDialog1.Filter = "JPEG-Bild|*.jpg|Bitmap-Bild|*.bmp|GIF-Bild|*.gif";
   saveFileDialog1.Title = "Bilddatei speichern";
   saveFileDialog1.ShowDialog();

   // Wenn der Dateiname keine leere Zeichenkette ist, Datei zum Speichern öffnen.
   if(saveFileDialog1.FileName != "")
   {
     // Bild mit einem von der OpenFile-Methode erstellten FileStream speichern.
     FileStream fs = (FileStream)saveFileDialog1.OpenFile();
     // Bild im entsprechenden ImageFormat basierend auf dem im Dialogfeld
     // ausgewählten Dateityp speichern.
     // BEACHTEN Sie, dass die FilterIndex-Eigenschaft auf Eins basiert.
     switch(saveFileDialog1.FilterIndex)
     {
       case 1 : 
       this.button2.Image.Save(fs,ImageFormat.Jpeg);
       break;

       case 2 : 
       this.button2.Image.Save(fs,ImageFormat.Bmp);
       break;

       case 3 : 
       this.button2.Image.Save(fs,ImageFormat.Gif);
       break;
     }

   fs.Close();
   }
}

Weitere Informationen zum Schreiben von Dateistreams finden Sie unter FileStream.BeginWrite Method (in Englisch).

 

"ColorDialog"-Komponente

Dieses Dialogfeld zeigt eine Farbliste an und gibt eine Eigenschaft zurück, die die vom Benutzer ausgewählte Farbe enthält.

Im Gegensatz zu den bereits erwähnten Dialogkomponenten ermöglicht die ColorDialog-Komponente den einfachen Zugriff auf die Hauptfunktion des Dialogfelds (Auswählen einer Farbe). Die im Dialogfeld ausgewählte Farbe wird in der Color-Eigenschaft zurückgegeben. Das Nutzen der vom Benutzer ausgewählten Farbe ist somit genauso einfach wie das Festlegen einer Eigenschaft. Im folgenden Beispiel öffnet der Click-Ereignishandler des Button-Steuerelements eine ColorDialog-Komponente. Nachdem der Benutzer eine Farbe gewählt und auf OK geklickt hat, wird die Hintergrundfarbe der Schaltfläche in die gewählte Farbe geändert. Im Beispiel werden ein Button-Steuerelement mit der Bezeichnung Button1 sowie eine ColorDialog-Komponente mit der Bezeichnung ColorDialog1 verwendet.

' Visual Basic 
Privat e Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
   If ColorDialog1.ShowDialog() = DialogResult.OK Then
     Button1.BackColor = ColorDialog1.Color
   End If
End Sub

// C#
private void button1_Click(object sender, System.EventArgs e)
{
   if(colorDialog1.ShowDialog() == DialogResult.OK)
   {
     button1.BackColor = colorDialog1.Color;
   }
}

Zu den weiteren Eigenschaften, die für die ColorDialog-Komponente festgelegt werden können, zählt auch die AllowFullOpen-Eigenschaft. Ist diese auf FALSE gesetzt, wird die Schaltfläche Benutzerdefinierte Farben deaktiviert, womit sich die Farbauswahl für den Benutzer auf die in der Palette definierten Farben beschränkt. Wenn die SolidColorOnly-Eigenschaft auf TRUE gesetzt wurde, kann der Benutzer keine Farben mit Farbverlauf wählen.

 

"FontDialog"-Komponente

In diesem Dialogfeld kann der Benutzer eine Schriftart auswählen und deren Anzeigeeigenschaften wie Breite und Größ;e ändern.

Die im Dialogfeld ausgewählte Schriftart wird in der Font-Eigenschaft zurückgegeben. Das Nutzen der vom Benutzer ausgewählten Schriftart ist somit genauso einfach wie das Festlegen einer Eigenschaft. Im folgenden Beispiel öffnet der Click-Ereignishandler des Button-Steuerelements eine FontDialog-Komponente. Wenn der Benutzer eine Schriftart gewählt und auf OK geklickt hat, wird die Font-Eigenschaft eines auf dem Formular enthaltenen TextBox-Steuerelements auf die gewählte Schriftart gesetzt. Im Beispiel werden ein Button-Steuerelement mit der Bezeichnung Button1, ein TextBox-Steuerelement mit der Bezeichnung TextBox1 und eine FontDialog-Komponente mit der Bezeichnung FontDialog1 verwendet.

' Visual Basic 
Private Sub Button1_Click(ByVal sender As System.Object, _
 ByVal e As System.EventArgs) Handles Button1.Click
   If FontDialog1.ShowDialog() = DialogResult.OK Then
     TextBox1.Font = FontDialog1.Font
   End If
End Sub

// C#
private void button1_Click(object sender, System.EventArgs e)
{
   if(fontDialog1.ShowDialog() == DialogResult.OK)
   {
     textBox1.Font = fontDialog1.Font;
   }
}

Zu den weiteren Eigenschaften, die über die FontDialog-Komponente festgelegt werden können, zählen die MinSize- und die MaxSize-Eigenschaften, welche den minimalen bzw. maximalen Schriftgrad festlegen, den ein Benutzer wählen kann. Wurde die ShowColor-Eigenschaft auf TRUE gesetzt, wird im Dialogfeld ein Dropdown-Listenfeld angezeigt, in dem der Benutzer die Farbe der Schriftart wählen kann.

 

"PrintDocument"-Klasse

Die im Folgenden vorgestellten Dialogfelder (die Komponenten PrintDialog und PageSetupDialog sowie das PrintPreviewDialog-Steuerelement) verwenden alle die PrintDocument-Klasse. Die PrintDocument-Klasse stellt ein zu druckendes Dokument dar. In dieser Klasse werden Eigenschaften festgelegt, mit denen die Darstellung und die Druckart des Dokuments gesteuert werden. Nach der Festlegung werden dann Instanzen dieser Klasse zum Drucker gesendet. In der Regel instanzieren Sie eine Instanz der PrintDocument-Klasse, legen deren Eigenschaften in einer Instanz der PageSetupDialog-Komponente fest, zeigen das Dokument in der Druckvorschau in einer Instanz des PrintPreviewDialog-Steuerelements an und drucken es anschließ;end aus einer Instanz der PrintDialog-Komponente heraus aus.

Weitere Informationen zur PrintDocument-Klasse finden Sie unter PrintDocument-Klasse (in Englisch).

 

"PrintDialog"-Komponente

Dieses Dialogfeld bietet Benutzern verschiedene Möglichkeiten, Dokumente an den Drucker zu senden. Darüber hinaus ermöglicht es die Auswahl eines Druckers und der zu druckenden Seiten sowie das Festlegen weiterer Druckoptionen. Der Benutzer kann entweder das gesamte Dokument oder nur bestimmte Seiten (Auswahl über Seitenzahlen oder Markierung) drucken.

Ein wichtiger Punkt bei der Arbeit mit der PrintDialog-Komponente ist die Interaktion mit der PrinterSettings-Klasse. Die PrinterSettings-Klasse wird verwendet, um die spezifischen Einstellungsmöglichkeiten für die Druckerfeatures darzustellen, z.B. Papierzufuhr, Druckerauflösung und Duplexdruck. Alle Einstellungen werden als Eigenschaft der PrinterSettings-Klasse dargestellt. Die PrintDialog-Klasse ändert diese Eigenschaftenwerte für eine ausgewählte Instanz der PrinterSettings-Klasse, die mit dem Dokument verknüpft ist (und als PrintDocument.PrinterSettings-Eigenschaft dargestellt ist).

Die PrintDialog-Komponente sendet eine Instanz der PrintDocument-Klasse mit bestimmten Druckereinstellungen an den ausgewählten Drucker. Weitere Informationen zum Senden von Dokumenten über die PrintDialog-Komponente an einen Drucker finden Sie unter Creating Standard Windows Forms Print Jobs (in Englisch).

 

"PageSetupDialog"-Komponente

Die PageSetupDialog-Komponente wird verwendet, um dem Benutzer Layout, Papierformat und weitere Optionen zur Seiteneinrichtung anzuzeigen. Die PageSetupDialog-Komponente wird wie alle anderen Dialogfelder mit der ShowDialog-Methode angezeigt. Des Weiteren müssen Sie eine Instanz der PrintDocument-Klasse angeben, die das zu druckende Dokument darstellt. Benutzer benötigen zudem einen lokal oder im Netzwerk installierten Drucker. Durch die Installation wird u.a. festgelegt, welche Formatierungseinstellungen die PageSetupDialog-Komponente zur Verfügung stellt.

Ein wichtiger Punkt bei der Arbeit mit der PageSetupDialog-Komponente ist die Interaktion mit der PageSettings-Klasse. Die PageSettings-Klasse wird verwendet, um Einstellungen festzulegen, mit denen die Druckart einer Seite geändert wird, z.B. Ausrichtung, Seitengröß;e und Seitenränder. Alle Einstellungen werden als Eigenschaft der PageSettings-Klasse dargestellt. Die PageSetupDialog-Klasse ändert diese Eigenschaftenwerte für eine ausgewählte Instanz der PageSettings-Klasse, die mit dem Dokument verknüpft ist (und als PrintDocument.DefaultPageSettings-Eigenschaft dargestellt ist).

Im nachfolgenden Code öffnet der Click-Ereignishandler des Button-Steuerelements eine Instanz der PageSetupDialog-Komponente. In der Document-Eigenschaft wird ein vorhandenes Dokument angegeben, und die Color-Eigenschaft des Dokuments wird auf FALSE gesetzt.

Im Beispiel werden ein Button-Steuerelement mit der Bezeichnung Button1, eine PrintDocument-Komponente mit der Bezeichnung myDocument und eine PageSetupDialog-Komponente mit der Bezeichnung PageSetupDialog1 verwendet.

' Visual Basic
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
   ' Das nachfolgende Dokument 'myDocument' dient 
   ' nur als Beispiel.
   ' Sie müssen ein eigenes Dokument angeben. PageSetupDialog1.Document = myDocument
   ' Farbeinstellungen des Druckers auf FALSE setzen,
   ' damit die Seite nicht farbig gedruckt wird.
   PageSetupDialog1.Document.DefaultPageSettings.Color = False
   PageSetupDialog1.ShowDialog()
End Sub

// C#
private void button1_Click(object sender, System.EventArgs e)
{
   // Das nachfolgende Dokument 'myDocument' dient 
   // nur als Beispiel.
   // Sie müssen ein eigenes Dokument angeben.
   pageSetupDialog1.Document = myDocument;
   // Farbeinstellungen des Druckers auf FALSE setzen, 
   // damit die Seite nicht farbig gedruckt wird.
   pageSetupDialog1.Document.DefaultPageSettings.Color = false;
   pageSetupDialog1.ShowDialog();
}

 

"PrintPreviewDialog"-Steuerelement

Im Gegensatz zu anderen Dialogfeldern, die Auswirkungen auf die Anwendung oder andere Steuerelemente haben, zeigt das PrintPreviewDialog-Steuerelement die meisten Funktionen innerhalb des Dialogfelds an. Dieses Dialogfeld wird oftmals für die Druckvorschau verwendet.

Das PrintPreviewDialog-Steuerelement wird wie alle anderen Dialogfelder mit der ShowDialog-Methode angezeigt. Des Weiteren müssen Sie eine Instanz der PrintDocument-Klasse angeben, die das zu druckende Dokument darstellt.

Anmerkung Zur Verwendung des PrintPreviewDialog-Steuerelements benötigen Sie einen lokal oder im Netzwerk installierten Drucker, da die PrintPreviewDialog-Komponente die Darstellung des gedruckten Dokuments zum Teil basierend auf dem installierten Druckertyp festlegt.

Ebenso wie die PrintDialog-Komponente verwendet auch das PrintPreviewDialog-Steuerelement die PrinterSettings-Klasse. Darüber hinaus verwendet das PrintPreviewDialog-Steuerelement ebenso wie die PageSetupDialog-Komponente die PageSettings-Klasse. Das in der Document-Eigenschaft des PrintPreviewDialog-Steuerelements angegebene Dokument verweist auf Instanzen der PrinterSettings- und der PageSettings-Klassen. Diese werden zur Darstellung des Dokuments in der Druckvorschau benötigt.

Im nachfolgenden Code öffnet der Click-Ereignishandler des Button-Steuerelements eine Instanz des PrintPreviewDialog-Steuerelements. Das zu druckende Dokument wird in der Document-Eigenschaft angegeben. Beachten Sie, dass im nachfolgenden Beispiel kein zu druckendes Dokument festgelegt wurde.

Im Beispiel werden ein Button-Steuerelement mit der Bezeichnung Button1, eine PrintDocument-Komponente mit der Bezeichnung myDocument und ein PrintPreviewDialog-Steuerelement mit der Bezeichnung PrintPreviewDialog1 verwendet.

' Visual Basic
Private Sub Button1_Click(ByVal sender As System.Object, _
 ByVal e As System.EventArgs) Handles Button1.Click
   ' Das nachfolgende Dokument 'myDocument' dient 
   ' nur als Beispiel. 
   ' Sie müssen ein eigenes Dokument angeben. 
   PrintPreviewDialog1.Document = myDocument
   PrintPreviewDialog1.ShowDialog()
End Sub

// C#
private void button1_Click(object sender, System.EventArgs e)
{
   // Das nachfolgende Dokument 'myDocument' dient 
   // nur als Beispiel.
   // Sie müssen ein eigenes Dokument angeben.
   printPreviewDialog1.Document = myDocument;
   printPreviewDialog1.ShowDialog()
}

 

Schlussfolgerung

Das .NET Framework unterstützt viele der Dialogfelder, die von Windows-Benutzern häufig verwendet werden, und ermöglicht es Ihnen, diese vertrauten Benutzerinteraktionen in Ihre Anwendung aufzunehmen. Oftmals gibt es eine Reihe von Möglichkeiten, die Aufgaben eines Dialogfelds zu implementieren. .NET lässt diesen Aspekt der Architektur offen, so dass Sie eine Lösung programmieren können, die auf die Anforderungen Ihrer Anwendung zugeschnitten ist. In diesem Artikel wurden einige einfache Verfahren zum Durchführen von Aufgaben behandelt, die mit den Dialogfeldkomponenten verknüpft sind. Der Artikel enthält einige einfache Codebeispiele, die Sie übernehmen bzw. an die Anforderungen Ihrer Anwendung anpassen können.