using ComPDFKitViewer.PdfViewer; using System; using System.Windows; namespace Compdfkit_Tools.Common { /// /// PasswordWindow.xaml 的交互逻辑 /// public partial class PasswordWindow : Window { private CPDFViewer pdfViewer; public delegate void DialogCloseEventHandler(object sender, PasswordEventArgs e); public event DialogCloseEventHandler DialogClosed; public PasswordWindow() { InitializeComponent(); } private void PasswordDialog_Loaded(object sender, RoutedEventArgs e) { PasswordDialog.Canceled += PasswordDialog_Canceled; PasswordDialog.Confirmed += PasswordDialog_Confirmed; PasswordDialog.Closed += PasswordDialog_Closed; } public void InitWithPDFViewer(CPDFViewer pdfViewer) { this.pdfViewer = pdfViewer; } private void PasswordDialog_Unloaded(object sender, RoutedEventArgs e) { PasswordDialog.Canceled -= PasswordDialog_Canceled; PasswordDialog.Confirmed -= PasswordDialog_Confirmed; PasswordDialog.Closed -= PasswordDialog_Closed; } private void PasswordDialog_Closed(object sender, EventArgs e) { PasswordEventArgs passwordEventArgs = new PasswordEventArgs(string.Empty); CloseWindow(passwordEventArgs); } private void PasswordDialog_Confirmed(object sender, string e) { if (pdfViewer != null) { pdfViewer.Document.UnlockWithPassword(e); if (pdfViewer.Document.IsLocked == false) { PasswordEventArgs passwordEventArgs = new PasswordEventArgs(e); CloseWindow(passwordEventArgs); } else { PasswordDialog.SetShowError("Wrong Password", Visibility.Visible); } } } private void PasswordDialog_Canceled(object sender, EventArgs e) { PasswordEventArgs passwordEventArgs = new PasswordEventArgs(string.Empty); CloseWindow(passwordEventArgs); } // 弹窗关闭时的处理逻辑 private void CloseWindow(PasswordEventArgs dialogResult) { // 触发关闭事件,并传递返回值 DialogClosed?.Invoke(this, dialogResult); // 关闭窗口 Close(); } } public class PasswordEventArgs : EventArgs { public string DialogResult { get; set; } public PasswordEventArgs(string dialogResult) { DialogResult = dialogResult; } } }