Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1550 | Anzahl registrierter User: 1840 | Besucher online: 192
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

TaskDialog anzeigen


Autor: Christoph Hausner
Sprache: C#
Bewertung:
7.67 (2 votes)
Anzahl der Aufrufe: 5597
  
Kick it on dotnet-kicks.de  

Beschreibung:

Mit Windows Vista wurde der sog. TaskDialog eingeführt, ein Dialogfenster, das jedoch um einiges vielseitiger ist als die alte MessageBox. Die einfache Form des TaskDialogs, die hier implementiert wurde, wird durch die TaskDialog-Funktion in der comctl32.dll (Version 6) bereitgestellt.

Ein Aufruf der API könnte z.B. so aussehen:
TaskDialog taskDialog = new TaskDialog();

taskDialog.Title = "Connection error";
taskDialog.Instruction = "Could not connect to database";
taskDialog.Content = "The connection to your database could not be established. Make sure your db server is running.";

taskDialog.Buttons = TaskDialogButtons.Retry | TaskDialogButtons.Cancel;
taskDialog.Icon = TaskDialogIcon.Error;

taskDialog.Parent = Handle;

TaskDialogResult result = taskDialog.Show();


Soll der TaskDialog modal angezeigt werden sodass während der Dialog geöffnet ist nicht zum Hauptfenster der Anwendung gewechselt werden kann, muss man die Parent-Eigenschaft setzen. Im Normalfall wäre das die Handle-Eigenschaft des aufrufenden WinForms-Formulars.
Unter WPF bekommt man das Handle mittels der WindowInteropHelper-Klasse.

Achtung: WPF-Anwendungen laden standardmäßig nicht die Version 6 der comctl32.dll. Will man in WPF den TaskDialog verwenden, muss man mittels eines Manifestes die richtige Version der DLL laden. Mehr Infos dazu gibts auf http://www.pinvoke.net/default.aspx/comctl32/TaskDialog.html.


Abgelegt unter: TaskDialog, MessageBox, Dialog, WPF.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
[Flags]
public enum TaskDialogButtons
{
    None = 0x0,
    OK = 0x1,
    Yes = 0x2,
    No = 0x4,
    Cancel = 0x8,
    Retry = 0x10,
    Close = 0x20
}

public enum TaskDialogIcon
{
    None = 0x0,
    Warning = 0xFFFF,
    Error = 0xFFFE,
    Information = 0xFFFD,
    Shield = 0xFFFC,
}

public enum TaskDialogResult
{
    None = 0x0,
    OK = 0x1,
    Cancel = 0x2,
    Retry = 0x4,
    Yes = 0x6,
    No = 0x7,
    Close = 0x8
}

public class TaskDialog
{
    [DllImport("comctl32.dll", CharSet = CharSet.Unicode, EntryPoint = "TaskDialog")]
    private static extern int ShowTaskDialog(IntPtr hWndParent, IntPtr hInstance, string pszWindowTitle, string pszMainInstruction, string pszContent, int dwCommonButtons, IntPtr pszIcon, out int pnButton);

    public string Title { get; set; }
    public string Instruction { get; set; }
    public string Content { get; set; }

    public TaskDialogButtons Buttons { get; set; }
    public TaskDialogIcon Icon { get; set; }

    public IntPtr Parent { get; set; }

    public static TaskDialogResult Show(string content)
    {
        return Show(string.Empty, string.Empty, content);
    }

    public static TaskDialogResult Show(string title, string instruction, string content)
    {
        return Show(title, instruction, content, TaskDialogButtons.OK);
    }

    public static TaskDialogResult Show(string title, string instruction, string content, TaskDialogButtons buttons)
    {
        return Show(title, instruction, content, buttons, TaskDialogIcon.None);
    }

    public static TaskDialogResult Show(string title, string instruction, string content, TaskDialogButtons buttons, TaskDialogIcon icon)
    {
        return Show(title, instruction, content, buttons, icon);
    }

    public static TaskDialogResult Show(string title, string instruction, string content, TaskDialogButtons buttons, TaskDialogIcon icon, IntPtr parent)
    {
        int result;

        ShowTaskDialog(parent, IntPtr.Zero, title, instruction, content, (int)buttons, new IntPtr((int)icon), out result);

        return (TaskDialogResult)result;
    }

    public TaskDialogResult Show()
    {
        return Show(Title, Instruction, Content, Buttons, Icon, Parent);
    }
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

phi1010 schrieb am:  22.05.2011 13:33:19


public static TaskDialogResult Show(string title, string instruction, string content, TaskDialogButtons buttons, TaskDialogIcon icon)
{
return Show(title, instruction, content, buttons, icon);
}

verursacht eine Endlosschleife und damit eine System.StackOverflowException.


Diese Snippets könnten für Sie interessant sein:
[C#] Sicherheitsabfrage - Anwendung beenden
[ASP.net] MessageBox in ASP.net
[C#] MessageBox Appender für LOG4NET
[C#] Fading MessageBox ohne Buttons
[C#] Code zur Laufzeit kompilieren
[C#] InputBox WPF C#
[C#] Datei-Eigenschaften zeigen (Eigenschaften-Fenster)
[C#] Den Bildschirm um Dialog herum abdunkeln/ausgrauen.
[C#] Verzeichnisauswahl Dialog (FolderBrowserDialog)
[C#] Öffnet den Windows Info Dialog.
[C#] FolderBrowseDialog in WPF
[C#] Daten aus einer Datenbank in WPF darstellen
[C#] WPF-Steuerelemente in Windows Forms-Anwendung nutzen
[C#] Transparente WPF-Anwendung
[C#] Rechtschreibhilfe in .NET WPF Anwendung integrieren
[C#] Alle verfügbaren Farben mittels WPF ausgeben
[C#] WPF: Image aus dem Web in Image-Element anzeigen
[C#] Handle eines WPF Fensters ermitteln
[VB.NET] Theme für WPF-Anwendungen anwenden
[C#] WPF Fenster mit Aero Glass
[C#] Bilder aus *.resx Ressourcen Dateien in WPF verwenden
[C#] RoutedEvent erstellen
[C#] Automatische Anpassung der Breite von GridViewColumns
[C#] User-Management für WPF Smart Client Anwendung
[C#] WPF Formulare dynamisch laden
[C#] old Windows Forms Image to new WPF Image
[C#] WPF Shortcut
[C#] Drag-and-Drop-Binding in .NET 4
[C#] Spalten des WPF-DataGrid in .NET 4 anpassen
[C#] WPF-Anwendung mit .NET 4 entwickeln
[C#] WPF Tutorial: Auf Datenbankinhalte mit WCF zugreifen
[C#] WPF: Mit Validation Rules Eingaben validieren
[C#] WPF: Rechtschreibhilfe in Anwendung integrieren
[C#] WPF-Splash-Fenster
[VB.NET] Ist Silverlight im Design Modus oder in der IDE (WPF)
[C#] Ribbon-Oberfläche in WPF implementieren
[C#] Hochwertige (optisch ansprechende) WPF - Buttons
[C#] WPF - Buttons "OK/Cancel" - endlich unverwechselbar -
[C#] Visuelles Feedback fokussierter Text Boxen
[C#] TextBlock animiert ein- und ausblenden

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.