Parcourir la source

其他 - 调整PDFViewerControl的初始化流程

zhuyi il y a 1 an
Parent
commit
19a1477ea6

+ 9 - 1
Demo/Examples/Compdfkit_Tools/PDFView/PDFViewControl/PDFViewControl.xaml.cs

@@ -14,6 +14,7 @@ namespace Compdfkit_Tools.PDFControl
 {
     public partial class PDFViewControl : UserControl
     {
+        static CPDFViewerTool ViewerTool = new CPDFViewerTool();
         public CPDFToolManager PDFToolManager;
         #region Properties
         public CPDFViewerTool PDFViewTool { get; set; }
@@ -25,7 +26,14 @@ namespace Compdfkit_Tools.PDFControl
         public PDFViewControl()
         {
             InitializeComponent();
-            PDFViewTool = new CPDFViewerTool();
+            if (ViewerTool==null)
+            {
+                PDFViewTool = ViewerTool= new CPDFViewerTool();
+            }
+            else
+            {
+                PDFViewTool = ViewerTool;
+            }
             Content = PDFViewTool;
             PDFViewTool.GetCPDFViewer().MouseWheelZoomHandler += PDFViewControl_MouseWheelZoomHandler;
             PDFViewTool.SizeChanged += PDFViewTool_SizeChanged;

+ 33 - 0
Demo/Examples/PDFViewer/App.xaml.cs

@@ -6,6 +6,7 @@ using System.Linq;
 using System.Reflection;
 using System.Threading.Tasks;
 using System.Windows;
+using System.Windows.Threading;
 using System.Xml;
 using ComPDFKit.NativeMethod;
 using Compdfkit_Tools.Helper;
@@ -20,6 +21,38 @@ namespace PDFViewer
         static public bool DefaultPDFLoaded = false;
         public static List<string> OpenedFilePathList = new List<string>();
 
+        public App()
+        {
+            this.DispatcherUnhandledException += App_DispatcherUnhandledException;
+            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
+            TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
+        }
+
+
+        private void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
+        {
+            var ex = e.Exception as Exception;
+            if (ex != null)
+            {
+                MessageBox.Show("发生Task未处理异常:" + ex.Message + "\n" + ex.StackTrace, "系统错误", MessageBoxButton.OK, MessageBoxImage.Error);
+            }
+        }
+
+        private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
+        {
+            if (e.ExceptionObject is System.Exception)
+            {
+                Exception ex = (System.Exception)e.ExceptionObject;
+                MessageBox.Show("发生非UI线程异常:" + ex.Message + "\n" + ex.StackTrace, "系统错误", MessageBoxButton.OK, MessageBoxImage.Error);
+            }
+        }
+
+        private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
+        {
+            e.Handled = true;
+            MessageBox.Show("发生UI线程异常:" + e.Exception.Message + "\n" + e.Exception.StackTrace, "系统错误", MessageBoxButton.OK, MessageBoxImage.Error);
+        }
+
         protected override void OnStartup(StartupEventArgs e)
         {
             string str = this.GetType().Assembly.Location;

+ 5 - 2
Demo/Examples/PDFViewer/MainPage.xaml.cs

@@ -347,6 +347,7 @@ namespace PDFViewer
                 if (regularViewerControl.PdfViewControl != null)
                 {
                     PDFGrid.Child = regularViewerControl;
+                    viewControl.PDFToolManager.SetToolType(ComPDFKit.Tool.CPDFToolManager.ToolType.Viewer);
                     //viewControl.PDFView.SetMouseMode(MouseModes.Viewer);
                     regularViewerControl.PdfViewControl = viewControl;
                     regularViewerControl.InitWithPDFViewer(viewControl);
@@ -362,6 +363,8 @@ namespace PDFViewer
                 if (annotationControl.PDFViewControl != null)
                 {
                     PDFGrid.Child = annotationControl;
+
+                    viewControl.PDFToolManager.SetToolType(ComPDFKit.Tool.CPDFToolManager.ToolType.CreateAnnot);
                     //viewControl.PDFView.SetMouseMode(MouseModes.AnnotCreate);
                     //annotationControl.PDFViewControl.PDFView.SetToolParam(new AnnotHandlerEventArgs());
                     annotationControl.PDFViewControl = viewControl;
@@ -381,7 +384,7 @@ namespace PDFViewer
                 if (formControl.PdfViewControl != null )
                 {
                     PDFGrid.Child = formControl;
-                    //viewControl.PDFView.SetMouseMode(MouseModes.FormEditTool);
+                    viewControl.PDFToolManager.SetToolType(ComPDFKit.Tool.CPDFToolManager.ToolType.FormEdit);
                     formControl.PdfViewControl = viewControl;
                     formControl.InitWithPDFViewer(viewControl);
                     formControl.OnCanSaveChanged -= ControlOnCanSaveChanged;
@@ -403,7 +406,7 @@ namespace PDFViewer
                     //viewControl.PDFView?.ReloadDocument();
 
                     PDFGrid.Child = contentEditControl;
-                   // viewControl.PDFView.SetMouseMode(MouseModes.PDFEdit);
+                    viewControl.PDFToolManager.SetToolType(ComPDFKit.Tool.CPDFToolManager.ToolType.ContentEdit);
                     contentEditControl.PdfViewControl = viewControl;
                     contentEditControl.InitWithPDFViewer(viewControl);
                     contentEditControl.OnCanSaveChanged -= ControlOnCanSaveChanged;