Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort zur 6. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Das Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Strukturen und Enumerationen
7 Fehlerbehandlung und Debugging
8 Auflistungsklassen (Collections)
9 Generics – Generische Datentypen
10 Weitere C#-Sprachfeatures
11 LINQ
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 XML
15 Multithreading und die Task Parallel Library (TPL)
16 Einige wichtige .NET-Klassen
17 Projektmanagement und Visual Studio 2012
18 Einführung in die WPF und XAML
19 WPF-Layout-Container
20 Fenster in der WPF
21 WPF-Steuerelemente
22 Elementbindungen
23 Konzepte von WPF
24 Datenbindung
25 Weitere Möglichkeiten der Datenbindung
26 Dependency Properties
27 Ereignisse in der WPF
28 WPF-Commands
29 Benutzerdefinierte Controls
30 2D-Grafik
31 ADO.NET – Verbindungsorientierte Objekte
32 ADO.NET – Das Command-Objekt
33 ADO.NET – Der SqlDataAdapter
34 ADO.NET – Daten im lokalen Speicher
35 ADO.NET – Aktualisieren der Datenbank
36 Stark typisierte DataSets
37 Einführung in das ADO.NET Entity Framework
38 Datenabfragen des Entity Data Models (EDM)
39 Entitätsaktualisierung und Zustandsverwaltung
40 Konflikte behandeln
41 Plain Old CLR Objects (POCOs)
Stichwort

Download:
- Beispiele, ca. 62,4 MB

Buch bestellen
Ihre Meinung?

Spacer
Visual C# 2012 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2012

Visual C# 2012
Rheinwerk Computing
1402 S., 6., aktualisierte und erweiterte Auflage 2013, geb., mit DVD
49,90 Euro, ISBN 978-3-8362-1997-6
Pfeil 21 WPF-Steuerelemente
Pfeil 21.1 Die Hierarchie der WPF-Komponenten
Pfeil 21.2 Allgemeine Eigenschaften der WPF-Steuerelemente
Pfeil 21.2.1 Den Außenrand mit der Eigenschaft »Margin« festlegen
Pfeil 21.2.2 Den Innenrand mit der Eigenschaft »Padding« festlegen
Pfeil 21.2.3 Die Eigenschaft »Content«
Pfeil 21.2.4 Die Größe einer Komponente
Pfeil 21.2.5 Die Ausrichtung einer Komponente
Pfeil 21.2.6 Die Sichtbarkeit eines Steuerelements
Pfeil 21.2.7 Die Farbeinstellungen
Pfeil 21.2.8 Die Schriften
Pfeil 21.3 Die unterschiedlichen Schaltflächen
Pfeil 21.3.1 Die Basisklasse »ButtonBase«
Pfeil 21.3.2 Das Steuerelement »Button«
Pfeil 21.3.3 Das Steuerelement »ToggleButton«
Pfeil 21.3.4 Das Steuerelement »RepeatButton«
Pfeil 21.3.5 Das Steuerelement »Checkbox«
Pfeil 21.3.6 Das Steuerelement »RadioButton«
Pfeil 21.4 Einfache Eingabesteuerelemente
Pfeil 21.4.1 Das Steuerelement »Label«
Pfeil 21.4.2 Das Steuerelement »TextBox«
Pfeil 21.4.3 Das Steuerelement »PasswordBox«
Pfeil 21.4.4 Das Steuerelement »TextBlock«
Pfeil 21.5 WPF-Listenelemente
Pfeil 21.5.1 Das Steuerelement »ListBox«
Pfeil 21.5.2 Die »ComboBox«
Pfeil 21.5.3 Das Steuerelement »ListView«
Pfeil 21.5.4 Das Steuerelement »TreeView«
Pfeil 21.5.5 Das Steuerelement »TabControl«
Pfeil 21.5.6 Die Menüleiste
Pfeil 21.5.7 Das Kontextmenü
Pfeil 21.5.8 Symbolleisten
Pfeil 21.5.9 Die Statusleiste
Pfeil 21.6 Weitere Steuerelemente
Pfeil 21.6.1 Das Steuerelement »ToolTip«
Pfeil 21.6.2 Die »Progressbar«
Pfeil 21.6.3 Das Steuerelement »Slider«
Pfeil 21.6.4 Das »GroupBox«-Steuerelement
Pfeil 21.6.5 Das Steuerelement »ScrollViewer«
Pfeil 21.6.6 Das Steuerelement »Expander«
Pfeil 21.6.7 Das Steuerelement »Border«
Pfeil 21.6.8 Die »Image«-Komponente
Pfeil 21.6.9 »Calendar« und »DatePicker« zur Datumsangabe
Pfeil 21.6.10 Das Steuerelement »InkCanvas«
Pfeil 21.7 Das »Ribbon«-Steuerelement
Pfeil 21.7.1 Voraussetzungen für den Zugriff auf das »Ribbon«-Control
Pfeil 21.7.2 Ein kurzer Überblick
Pfeil 21.7.3 Der XAML-Code
Pfeil 21.8 FlowDocuments
Pfeil 21.8.1 Allgemeine Beschreibung eines FlowDocuments
Pfeil 21.8.2 Eigenschaften eines »FlowDocuments«
Pfeil 21.8.3 Die Blöcke eines »FlowDocuments«
Pfeil 21.8.4 Inline-Elemente
Pfeil 21.8.5 »FlowDocuments« mit Code erzeugen
Pfeil 21.8.6 Speichern und Laden eines »FlowDocuments«
Pfeil 21.9 Das Element »FlowDocumentViewer«
Pfeil 21.9.1 Das Anzeigeelement »FlowDocumentScrollViewer«
Pfeil 21.9.2 Das Anzeigeelement »FlowDocumentPageViewer«
Pfeil 21.9.3 Das Anzeigeelement »FlowDocumentReader«
Pfeil 21.10 XPS-Dokumente mit »DocumentViewer«
Pfeil 21.10.1 Allgemeines zum XPS-Format
Pfeil 21.10.2 Beispielprogramm
Pfeil 21.11 Das Steuerelement »RichTextBox«

Galileo Computing - Zum Seitenanfang

21.11 Das Steuerelement »RichTextBox«Zur nächsten Überschrift

Alle zuvor vorgestellten Anzeigesteuerelemente FlowDocumentScrollViewer, FlowDocumentPageViewer und FlowDocumentReader, die über vielfältige Darstellungsmöglichkeiten verfügen, sind schreibgeschützt und erfüllen ihre Aufgabe nur als Komponenten zur Anzeige. Das RichTextBox-Steuerelement unterstützt den Anwender dabei, eigene Dokumente zu erstellen, deren Textdarstellung über die einer einfachen TextBox hinausgeht. Da eine TextBox und eine RichTextBox in der Klasse TextBoxBase eine gemeinsame Basisklasse haben, verwundert es nicht, dass beide über eine Vielzahl gemeinsamer Eigenschaften und Methoden verfügen.

Formatieren des Inhalts

Die RichTextBox gestattet viele Formatierungsmöglichkeiten des eingegebenen Textes. Neben der fetten oder kursiven Darstellung einzelner Wörter oder gar Buchstaben können Sie einzelnen Textpassagen, Wörtern und Zeichen eine andere Farbe oder eine andere Schriftart zuweisen. Dabei wird nur derjenige Text wunschgemäß formatiert, der aktuell ausgewählt ist.

Wir wollen uns ein Beispiel ansehen, mit dem wir den aktuell ausgewählten Text fett formatieren wollen. Die Eigenschaft Selection liefert zunächst den markierten Text. Darauf wird die Methode GetPropertyValue aufgerufen, der als Parameter die gewünschte Abhängigkeitseigenschaft übergeben wird. Damit werten wir die aktuelle Formatierung aus. In unserem Fall ist das die Eigenschaft FontWeightProperty. Der Rückgabewert ist vom Typ Object, den wir in diesem Fall in FontWeight umwandeln müssen. Damit haben wir die aktuelle Markierung erfahren. Wird der markierte Text in Normaldarstellung angezeigt, müssen wir ihn nun fett darstellen, ansonsten die fette Darstellung in Normaldarstellung. Nach einer Überprüfung mit entsprechender neuer Festlegung gilt es, das neue Format dem selektierten Text zuzuweisen. Dazu rufen wir die Methode ApplyPropertyValue auf und übergeben dabei den Typ der Abhängigkeitseigenschaft und den neuen Wert.

Abbildung

Abbildung 21.45 Fett formatierter Text in einem »RichTextBox«-Control

<Window ...
Title="RTB-Formatierung" Height="300" Width="500">
<DockPanel>
<StackPanel Orientation="Vertical" Width="100" DockPanel.Dock="Right">
<Button Height="30" Name="btnFett" Click="btnFett_Click">Fett</Button>
</StackPanel>
<RichTextBox Name="rtbDocument" Margin="5,5,5,5"
Background="LightGray" FontSize="18"></RichTextBox>

</DockPanel>

Listing 21.72 »RichTextBox«im XAML-Code

// Ereignishandler

private void btnFett_Click(object sender, RoutedEventArgs e) {
Object fett= rtbDocument.Selection.GetPropertyValue(FontWeightProperty);
FontWeight actFontWeight = (FontWeight)fett;
FontWeight newFontWeight;
if (actFontWeight == FontWeights.Bold)
newFontWeight = FontWeights.Normal;
else
newFontWeight = FontWeights.Bold;
rtbDocument.Selection.ApplyPropertyValue(
FontWeightProperty, newFontWeight);
rtbDocument.Focus();
}

Listing 21.73 Textpassagen per Code fett darstellen

Laden und Speichern

Das einfache Ändern einer Textformatierung mit Code ist nicht in einer Zeile zu erledigen. Ähnliches gilt für das Laden und Speichern von Text. Sehen wir uns zuerst den kompletten Ereignishandler einer Schaltfläche an, die das Laden eines Dokuments bewirkt.

private void btnLaden_Click(object sender, RoutedEventArgs e) {
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "Text-Dateien|*.txt|XAML-Dateien|*.xaml|RTF-Dateien|
*.rtf|Alle Dateien|*.*";
bool? result = dialog.ShowDialog();

if (result == true) {
string format = null; ;
switch(dialog.FilterIndex) {
case 1:
case 4:
format = DataFormats.Text;
break;
case 2:
format = DataFormats.Xaml;
break;
case 3:
format = DataFormats.Rtf;
break;
}
FlowDocument document = rtbDocument.Document;
TextRange range = new TextRange(document.ContentStart, document.ContentEnd);
FileStream stream = new FileStream(dialog.FileName, FileMode.Open,
FileAccess.ReadWrite);
range.Load(stream, format);
}
}

Listing 21.74 Laden eines Dokuments

Es gilt, zuerst den Inhalt des RichTextBox-Steuerelements zu referenzieren. Dazu wird auf der Objektreferenz die Eigenschaft Document ausgewertet, die ein Objekt vom Typ FlowDocument liefert. Immerhin müssen wir nicht zwangsläufig das gesamte Dokument laden oder speichern, es kann sich auch um eine einzelne Passage handeln, die durch ein Objekt vom Typ TextRange beschrieben wird. Der Konstruktor der Klasse TextRange erwartet die Angabe des Anfangs- und Endpunkts der zu behandelnden Passage. Möchten Sie das komplette Dokument laden bzw. speichern, werden die Eigenschaften ContentStart und ContentEnd des FlowDocument-Objekts angegeben.

Die Methoden Load und Save des TextRange-Objekts übernehmen das Laden und Speichern. Dazu übergeben Sie dem ersten Parameter ein Stream-Objekt, dem zweiten Parameter teilen Sie das Datenformat mit. Letzteres wird durch eine der zahlreichen statischen Felder der Klasse DataFormats beschrieben.

Standarddialoge werden von der WPF nicht direkt unterstützt. Allerdings gibt es mit einem kleinen Trick einen Weg, auch die Windows-internen Dialoge nutzen zu können. Dazu muss man zuerst den Namespace Microsoft.Win32 mit using bekannt geben. In diesem Namespace befinden sich die Klassen OpenFileDialog und SaveFileDialog. Beide Klassen müssen vor ihrer Nutzung instanziiert werden. Mit der Methode ShowDialog werden die Dialoge zur Anzeige gebracht. Der Rückgabewert ist bool?. Ist er true, hat der Anwender eine entsprechende Auswahl mit der Öffnen-Schaltfläche des Dialogs bestätigt.

Zahlreiche Eigenschaften gestatten die individuelle Gestaltung. Im Code wurde die Eigenschaft Filter dazu verwendet, im Öffnen-Dialog die angezeigten Daten zu filtern. In unserem Beispiel werden entweder TXT-, XAML-, RTF- oder gleich alle Dateien angezeigt. Je nach Filtereinstellung des Benutzers wird diese zur Festlegung eines entsprechenden Datenformats ausgewertet. Ausgewertet wird die Dateiwahl des Anwenders durch Abrufen der Eigenschaft FileName des OpenFileDialogs.

In ähnlicher Weise wird auch der Ereignishandler zum Speichern der Daten implementiert.

Im folgenden Beispielprogramm wird das Codebeispiel zur Formatierung erweitert. Der XAML-Code ist noch um zwei Buttons ergänzt, deren Ereignishandler das Laden und Speichern eines Dokuments ermöglicht.

// Beispiel: ..\Kapitel 21\RichTextBoxSample

private void btnLaden_Click(object sender, RoutedEventArgs e) {
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "Text-Dateien|*.txt|XAML-Dateien|*.xaml|RTF-Dateien|
*.rtf|Alle Dateien|*.*";
bool? result = dialog.ShowDialog();
if (result == true) {
string format = null; ;
switch (dialog.FilterIndex) {
case 1:
case 4:
format = DataFormats.Text;
break;
case 2:
format = DataFormats.Xaml;
break;
case 3:
format = DataFormats.Rtf;
break;
}
FlowDocument document = rtbDocument.Document;
TextRange range = new TextRange(document.ContentStart, document.ContentEnd);
FileStream stream = new FileStream(dialog.FileName, FileMode.Open,
FileAccess.ReadWrite);
range.Load(stream, format);
stream.Close();
}
}

private void btnSpeichern_Click(object sender, RoutedEventArgs e) {
SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "Text-Dateien|*.txt|XAML-Dateien|*.xaml|RTF-Dateien|*.rtf";
bool? result = dialog.ShowDialog();
if (result == true) {
string format = null; ;
switch (dialog.FilterIndex) {
case 1:
format = DataFormats.Text;
break;
case 2:
format = DataFormats.Xaml;
break;
case 3:
format = DataFormats.Rtf;
break;
}
FlowDocument document = rtbDocument.Document;
TextRange range = new TextRange(document.ContentStart, document.ContentEnd);
FileStream stream = new FileStream(dialog.FileName, FileMode.Create,
FileAccess.ReadWrite);
range.Save(stream, format);
stream.Close();
}
}

Listing 21.75 C#-Code des Beispielprogramms »RichTextBoxSample«



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Visual C# 2012

Visual C# 2012
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: C++ Handbuch






 C++ Handbuch


Zum Katalog: C/C++






 C/C++


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de