Interpolierte Zeichenketten

Beim Programmieren von Datenbankanwendungen arbeiten Sie immer wieder mit Zeichenfolgen. Dabei setzen Sie Zeichenketten mitunter auch aus mehreren Teilzeichenketten und den Werten aus Variablen oder Funktionen zusammen. Um dies zu erledigen, gibt es verschiedene Vorgehensweisen, die mehr oder weniger gut lesbar sind. Dieser Artikel zeigt die Möglichkeiten zum Zusammensetzen von Zeichenketten.

Weiterlesen

Bubbling und Tunneling: Routed Events

Im Vergleich zu VBA, wo jedes Ereignis für das Steuer-element behandelt wurde, welches es auch ausgelöst hat, gibt es unter WPF einige Erweiterungen. Es gibt dort auch solche Ereignisse, aber in vielen Fällen werden Ereignisse an übergeordnete Elemente weitergeleitet. Das hört sich erstmal so an, als ob man es nicht unbedingt benötigt. Dennoch wollen wir das Prinzip anhand eines Beispiels erläutern, damit Sie mitunter auftretendes unerwartetes Verhalten von Code interpretieren können.

Weiterlesen

Basics: ObservableCollection

Unter WPF gibt es einige Mechanismen, welche die Bindung der Steuerelemente an die zugrunde liegenden Daten in einem gewissen Rahmen automatisieren. Diese werden durch die Programmierung bestimmt – entweder durch die Verwendung bestimmter Schnittstellen für Eigenschaften oder auch durch entsprechende Auflistungstypen, die dann als Datenquelle etwa für Listen-Elemente verwendet werden. Mit der PropertyChanged-Schnittstelle haben wir schon die Synchronisierung zwischen den Attributen der XAML-Definition und Eigenschaften in den Code-Klassen besprochen (siehe Artikel “Basics: PropertyChanged”). In diesem Artikel schauen wir uns nun den Auflistungstyp ObservableCollection an.

Weiterlesen

Type Converter in WPF/C#

Manche Eigenschaften eines .xaml-Dokuments sind sehr flexibel. Für die Eigenschaft Margin beispielsweise können Sie ganz verschiedenen Werte angeben – zum Beispiel einfach den Wert 5, um Abstände in alle vier Richtungen zu erhalten oder auch die Zeichenkette 5,0,5,0, um nur einen linken und einen rechten Abstand abzubilden. Auch andere Eigenschaften nehmen durchaus unterschiedliche Werte entgegen, zum Beispiel solche zur Angabe von Farben. Wenn man genauer hinsieht, stellt man schnell fest, dass man da Attributen, die völlig anderen Typs sind, ein String-Literal zuweist. Warum das hier gelingt, beschreibt der vorliegende Artikel.

Weiterlesen

Datumsfunktionen

Ohne Datumsfunktionen kommt man in keiner Programmiersprache aus. Das ist unter C# natürlich nicht anders. Wer allerdings von Access/VBA kommt, muss sich ein wenig umstellen: Einzelne Funktionen wie Date() oder Time(), mit denen Sie beispielsweise das aktuelle Datum oder die aktuelle Uhrzeit ermittelt haben, suchen Sie hier vergeblich. Stattdessen nutzen Sie verschiedene Eigenschaften des Objekts DateTime. Der vorliegende Artikel zeigt die wichtigsten Elemente der C#-Programmiersprache zum Thema Datum und erläutert, wie das Datum hier im Hintergrund behandelt wird.

Weiterlesen

IntelliSense-Unterstützung für eigene Code-Elemente

Wenn Sie die eingebauten Klassen, Eigenschaften, Methoden und Ereignisse nutzen, profitieren Sie oft von den per IntelliSense angezeigten Informationen über das jeweilige Element. Wenn Sie jedoch eigene Klassen mit ihren Membern programmieren, ist die IntelliSense-Unterstützung auf das Nötigste beschränkt. Aber wie soll es auch anders sein Immerhin weiß Visual Studio ja nichts über den Zweck Ihrer Klassen, Methoden, Eigenschaften und Ereignisse. Also schauen wir uns an, wie Sie Ihren eigenen Code um IntelliSense-Texte erweitern.

Weiterlesen

Events in der Praxis

Im Artikel “Von VBA zu C#: Objekt-Ereignisse” haben wir bereits die Grundlagen zur Programmierung und Implementierung benutzerdefinierter Ereignisse gelegt. Dies wollen wir nun ausbauen, indem wir uns zwei praktische Beispiele ansehen. Dabei wollen wir von einem Hauptfenster aus verschiedene Ansichten in einem Frame anzeigen, darunter eine Kundenübersicht und eine Kundendetailansicht. Beim Anzeigen sollen verschiedene Dinge geschehen, die wir über die Implementierung von Ereignissen lösen wollen – und zwar über eingebaute sowie über benutzerdefinierte Ereignisse.

Weiterlesen

WPF-Trigger

Trigger kennt der geneigte Access-Anwender höchstens vom SQL Server, wo diese die Möglichkeit boten, auf Änderungen in den Tabellen zu reagieren, für die sie angelegt wurden. Ein Konstrukt namens Trigger gibt es aber auch unter WPF. Dort sind Trigger nicht an Tabellen gebundene Algorithmen, sondern Definitionen von Aktionen, die in Zusammenhang mit Datenänderungen ausgelöst werden. Dieser Artikel stellt Trigger und ihre Anwendungsmöglichkeiten vor.

Weiterlesen

Basics: PropertyChanged

Unter Access/VBA haben Sie Tabellen direkt an Formulare und Steuerelemente gebunden, Änderungen an den Daten wurden regelmäßig auch im Frontend aktualisiert. Unter C#/WPF sieht das ganz anders aus: Hier landen die Daten aus der Tabelle erstmal in Objekten und deren Eigenschaften werden mit Steuerelementen wie TextBox, ComboBox und so weiter angezeigt. Damit sich eine Änderungen am zugrunde liegenden Objekte auch in der Benutzeroberfläche manifestiert, sind ein paar zusätzliche Handgriffe nötig.

Weiterlesen

Die MessageBox-Klasse

Die MessageBox-Klasse unter C# bietet ähnliche Features wie die von VBA bekannte MsgBox-Funktion. Allerdings ist es erstens eine Klasse und zweitens kann sie natürlich doch noch einiges mehr als das VBA-Pendant. Dieser Artikel zeigt, wie Sie Meldungsfenster unter C# anzeigen und diese mit Texten, Schaltflächen und anderen Elementen ausstatten. Schließlich interessiert uns auch noch, wie wir die vom Benutzer angeklickten Schaltflächen und somit die Antworten auf die in der Meldung gestellten Fragen auswerten können.

Weiterlesen