Browse Source

ComPDFKit(win) - 修复文字编辑无法获取到刚创建的的文字块的数据对象问题

TangJinZhou 10 months ago
parent
commit
0093caf19e

+ 32 - 2
Demo/Examples/Compdfkit_Tools/Edit/ContentEditCOntrol/ContentEditControl.xaml.cs

@@ -43,7 +43,6 @@ namespace Compdfkit_Tools.PDFControl
         private CPoint startPoint;
         private CPoint endPoint;
 
-
         public PDFViewControl PdfViewControl;
         public PDFContentEditControl pdfContentEditControl = new PDFContentEditControl();
         private CPDFDisplaySettingsControl displaySettingsControl = null;
@@ -52,6 +51,7 @@ namespace Compdfkit_Tools.PDFControl
         private List<TextEditParam> lastPDFEditMultiEvents = null;
         private PanelState panelState = PanelState.GetInstance();
         private KeyEventHandler KeyDownHandler;
+        private bool textAreaCreating = false;
 
         public event PropertyChangedEventHandler PropertyChanged;
          
@@ -182,6 +182,8 @@ namespace Compdfkit_Tools.PDFControl
             PdfViewControl.MouseLeftButtonDownHandler += PDFToolManager_MouseLeftButtonDownHandler;
             PdfViewControl.MouseLeftButtonUpHandler -= PDFToolManager_MouseLeftButtonUpHandler;
             PdfViewControl.MouseLeftButtonUpHandler += PDFToolManager_MouseLeftButtonUpHandler;
+            PdfViewControl.DrawChanged -= PdfViewControl_DrawChanged;
+            PdfViewControl.DrawChanged += PdfViewControl_DrawChanged;
 
             PdfViewControl = view;
             PDFGrid.Child = PdfViewControl;
@@ -199,7 +201,30 @@ namespace Compdfkit_Tools.PDFControl
                 PdfViewControl.PDFViewTool.AddHandler(KeyDownEvent, KeyDownHandler, false);
             }
         }
-         
+
+        private void PdfViewControl_DrawChanged(object sender, EventArgs e)
+        {
+            if(textAreaCreating && PdfViewControl.PDFToolManager.GetCreateContentEditType() == CPDFEditType.EditText)
+            {
+                textAreaCreating = false;
+                int pageIndex = -1;
+                CPDFEditArea editAreaArea = PdfViewControl.PDFToolManager.GetSelectedEditAreaObject(ref pageIndex);
+                if (editAreaArea == null)
+                {
+                    return;
+                }
+                else
+                {
+                    if (editAreaArea.Type == CPDFEditType.EditText)
+                    {
+                        PDFEditParam pDFEditParam = ParamConverter.CPDFDataConverterToPDFEitParam(PdfViewControl.PDFToolManager.GetDocument(), editAreaArea, pageIndex);
+                        pdfContentEditControl.SetPDFTextEditData((TextEditParam)pDFEditParam, true);
+                        PropertyContainer.Child = pdfContentEditControl;
+                    }
+                }
+            }
+        }
+
         /// <summary>
         /// Short cut key for PDFView
         /// </summary> 
@@ -657,6 +682,11 @@ namespace Compdfkit_Tools.PDFControl
                 {
                     PdfViewControl.PDFToolManager.SetCreateContentEditType(CPDFEditType.None);
                 }
+
+                if(PdfViewControl.PDFToolManager.GetCreateContentEditType() == CPDFEditType.EditText)
+                {
+                    textAreaCreating = true;
+                }
             }
 
             int pageIndex = -1;