2 Stimmen

Avalon Dock Dokumentinhalt speichern, bevor C# geschlossen wird

Ich benutze Avalon Dock in einem Projekt, das ähnlich wie Notepad++ ist. Ich habe die Dokumente als Dokumentinhalt. Das Problem, mit dem ich konfrontiert bin, ist, dass wenn ein Benutzer einen Dokumentinhalt schließt,

möchte ich, dass er eine Popup-Nachricht erhält, ob er/sie das Dokument vor dem Schließen speichern möchte.

Wie kann ich das erreichen?

Vielen Dank im Voraus.

0 Stimmen

Exponiert das Dock-Komponente das onTabClosing-Ereignis, bei dem Sie e.Cancel auf true setzen könnten, wenn der Benutzer storniert, anstatt zu speichern... zum Beispiel?

0 Stimmen

@Davide Piras Meine Klasse erweitert einen Avalon-Dokumentinhalt und füge ihn meinem DockingManager hinzu. Jedes Dokument hat einen Schließen-Button, den ich schließen kann, aber ich möchte den Benutzer auffordern, zu speichern, bevor er/sie schließt. Ich weiß nicht, wie ich das Schließungsereignis abfangen oder wann und wo ich es aufrufen soll. `public partial class EditorCtrl: DocumentContent`

4voto

NetSquirrel Punkte 816

In der Version von AvalonDock, die ich verwende (1.2.2668.0), kann ich einfach einen Handler für das Closing-Ereignis eines DocumentContent definieren.

Beispiel zum Hinzufügen eines Handlers zu einem DocumentContent, ich füge einen Handler zum Closing-Ereignis hinzu:

DocumentContent dc = new DocumentContent();
dc.Closing += new EventHandler(dc_Closing);

Der Beispieler-Handler:

void dc_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    MessageBoxResult Res = MessageBox.Show("Möchten Sie speichern?", "Dokument speichern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
    switch (Res)
    {
        case MessageBoxResult.Cancel:
            //Benutzer hat abgebrochen, er möchte das Fenster wahrscheinlich nicht schließen
            e.Cancel = true;
            break;
        case MessageBoxResult.No:
            //Nichts zu tun - Schließen fortsetzen
            e.Cancel = false;
            break;
        case MessageBoxResult.Yes:
            //Er möchte speichern - Speichern hier starten!
            Save_Function_For_DocumentContent(sender);
            e.Cancel = false;
            break;
        default:
            //Etwas Unerwartetes, besser abbrechen
            e.Cancel = true;
            break;
    }

Hoffe, das hilft. Falls nicht, welche Version von AvalonDock verwenden Sie?}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X