Можно ли динамически отображать текстовые поля в WPF? - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь создать приложение WPF, которое просматривает и изменяет документ .docx. Он изменяет его, заменяя ключевые слова пользовательским вводом.

Ключевые слова: $ keyword1 $ * 14 и $ keyword2 $ * 10, et c.

В то время как мое приложение отображает содержимое документ .docx, включая ключевые слова, я бы хотел, чтобы они (ключевые слова) были покрыты визуализированным текстовым полем в точном положении внутри панели предварительного просмотра. Эти текстовые поля будут действовать как ввод для замены ключевого слова, которое охватывает / наложение. Надеюсь, это достаточно ясно.

У меня следующий вопрос: возможно ли динамически отображать текстовые поля, которые располагаются над ключевым словом? Если да, где я должен посмотреть об этом?

Код ниже предназначен для. Net WinForms и использует Office Interop для предварительного просмотра документа Word в richtextbox. В настоящее время я пытаюсь заставить его работать в WPF. Поскольку Microsoft говорит, что Office Interop работает нестабильно и не поддерживается, я подумываю попробовать Open XML, чтобы получить те же результаты.

Спасибо за прочтение и извинения за глупый вопрос. Я в начале моей карьеры программиста.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace wordtoform
{
    public partial class Form1 : Form
    {
        private readonly object fnd;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
                object filename = @"D:\test.docx";
                Microsoft.Office.Interop.Word.Application AC = new Microsoft.Office.Interop.Word.Application();
                Microsoft.Office.Interop.Word.Document doc = new Microsoft.Office.Interop.Word.Document();
                object readOnly = true;
                object isVisible = true;
                object missing = System.Reflection.Missing.Value;
                try
                {
                    doc = AC.Documents.Open(ref filename, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible);
                    doc.Content.Select();
                    doc.Content.Copy();
                    richTextBox1.Paste();

                }

                catch (Exception ex)
                {
                    MessageBox.Show("ERROR: " + ex.Message);
                }
                finally
                {
                    doc.Close(ref missing, ref missing, ref missing);
                }
        }       
    }
}
...