TaskDialog
Als Programmierer ist man meistens froh, wenn man eine Anwendung nicht von Grund auf selbst entwickeln muss, sondern stattdessen auf vorgefertigte Bauteile aus dem Windows-Baukasten zugreifen kann. Eine nützliche Gruppe dieser Bausteine sind die Windowseigenen Dialogfenster wie die MessageBox oder der FileOpenDialog. Diese existieren auch im .NET Framework, um den Entwicklern das Leben einfacher zu machen und standardisierte Fenster für bestimmte Aufgaben anzubieten. Auch für den Benutzer sind solche Fenster von Vorteil, da er sich nicht für jedes Programm an unterschiedliche Fenster gewöhnen muss.
Obwohl es die bekannten Dialoge auch weiterhin, gibt sind sie doch in die Jahre gekommen. Windows 7 bietet moderner Varianten der Dialogfenster an, die zwar die gleichen Aufgaben erfüllen, aber vom Design besser aussehen und teilweise auch mehr Möglichkeiten bieten. An dieser Stelle werden Sie jetzt einige, aber bei weitem nicht alle, neuen Dialoge kennenlernen.
Auch die neuen Dialogfenster sind zwar Teil der erweitern WindowsAPI, aber noch nicht von .NET Anwendungen ansprechbar. Auch hier schlägt das API Code Pack eine Brücke.
Um die erweitern Fenster zu benutzen, benötigen Sie jetzt zwingend auch den Verweis auf die Anfangs erwähnte Microsoft.WindowsAPICodePack.dll. Ausserdem sollten Sie folgende Namespace Deklaration hinzufügen.
using
Microsoft.WindowsAPICodePack.Dialogs;
Jetzt können Sie in einen TaskDialog instanzieren
und konfigurieren.
TaskDialog td =
new
TaskDialog();
td.Icon = TaskDialogStandardIcon.Error;
td.Caption = "Die Überschrift";
td.InstructionText = "Wichtige Mitteilung";
td.StandardButtons = TaskDialogStandardButtons.Yes | TaskDialogStandardButtons.Cancel;
TaskDialogResult res = td.Show();
td.Icon = TaskDialogStandardIcon.Error;
td.Caption = "Die Überschrift";
td.InstructionText = "Wichtige Mitteilung";
td.StandardButtons = TaskDialogStandardButtons.Yes | TaskDialogStandardButtons.Cancel;
TaskDialogResult res = td.Show();

Achtung! Eventuell bekommen Sie bei der Ausführung
eine Fehlermeldung, die besagt, dass Sie nicht die
Version 6 der Common Controls Bibliothek geladen
haben.
TaskDialog feature needs to load version 6 of comctl32.dll but a different version is current loaded in memory.
Diese Meldung bezieht sich auf die verwendet Version der Windows Steuerelemente Bibliothek. Die neuste Version wird nämlich nicht automatisch verwendet.
Alles, was man tun muss, ist die Anwendung anzuweisen, diese Bibliothek zu laden. Falls noch nicht vorhanden, fügen Sie die dem Projekt eine Manifestdatei hinzu, und erweitern Sie das Manifest um die folgende Abhängigkeit.
TaskDialog feature needs to load version 6 of comctl32.dll but a different version is current loaded in memory.
Diese Meldung bezieht sich auf die verwendet Version der Windows Steuerelemente Bibliothek. Die neuste Version wird nämlich nicht automatisch verwendet.
Alles, was man tun muss, ist die Anwendung anzuweisen, diese Bibliothek zu laden. Falls noch nicht vorhanden, fügen Sie die dem Projekt eine Manifestdatei hinzu, und erweitern Sie das Manifest um die folgende Abhängigkeit.
<</span>dependency>
<</span>dependentAssembly>
<</span>assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"/>
</dependentAssembly>
</dependency>
<</span>dependentAssembly>
<</span>assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"/>
</dependentAssembly>
</dependency>
Falls Sie weitere Informationen benötigen, finden
Sie auch Manifeste in den Beispielen und Projekten
des API Code Pack. Dann steht der Verwendung
des TaskDialogs nichts mehr im Weg.
Durch erweiterte Konfiguration können in diesem Dialogfenster sogar noch mehr Informationen angezeigt werden.
Durch erweiterte Konfiguration können in diesem Dialogfenster sogar noch mehr Informationen angezeigt werden.
TaskDialog td =
new
TaskDialog();
td.Icon = TaskDialogStandardIcon.Error;
td.Caption = "Die Überschrift";
td.Text = "Hier ist Platz für Zusätzliche Informationen";
td.InstructionText = "Wichtige Mitteilung";
td.FooterText = "Kontaktieren Sie den Kundendienst";
td.FooterIcon =
TaskDialogStandardIcon.Information;
td.StandardButtons =
TaskDialogStandardButtons.Yes | TaskDialogStandardButtons.Cancel;
td.Icon = TaskDialogStandardIcon.Error;
td.Caption = "Die Überschrift";
td.Text = "Hier ist Platz für Zusätzliche Informationen";
td.InstructionText = "Wichtige Mitteilung";
td.FooterText = "Kontaktieren Sie den Kundendienst";
td.FooterIcon =
TaskDialogStandardIcon.Information;
td.StandardButtons =
TaskDialogStandardButtons.Yes | TaskDialogStandardButtons.Cancel;

Ein typischer Anwendungsfall ist es, den Benutzer
zu fragen, ob er Meldungen dieser Art in Zukunft
nicht mehr sehen möchte. Mit dem TaskDialog ist das
sehr leicht möglich, denn er erlaubt es, eine
CheckBox mit anzuzeigen.
TaskDialog td =
new
TaskDialog();
td.Icon = TaskDialogStandardIcon.Warning;
td.Caption = "Die Überschrift";
td.Text = "Wollen Sie die Daten wirklich löschen?";
td.InstructionText = "Wichtige Mitteilung";
td.FooterCheckBoxText = "Diese Fenster nicht wieder anzeigen";
td.FooterIcon = TaskDialogStandardIcon.Information;
td.StandardButtons =
TaskDialogStandardButtons.Yes | TaskDialogStandardButtons.No;
TaskDialogResult res = td.Show();
if (td.FooterCheckBoxChecked == true)
{
}
td.Icon = TaskDialogStandardIcon.Warning;
td.Caption = "Die Überschrift";
td.Text = "Wollen Sie die Daten wirklich löschen?";
td.InstructionText = "Wichtige Mitteilung";
td.FooterCheckBoxText = "Diese Fenster nicht wieder anzeigen";
td.FooterIcon = TaskDialogStandardIcon.Information;
td.StandardButtons =
TaskDialogStandardButtons.Yes | TaskDialogStandardButtons.No;
TaskDialogResult res = td.Show();
if (td.FooterCheckBoxChecked == true)
{
}
