При отбрасывании фрагмента текста, как я могу сохранить ссылки, чтобы оставаться работоспособным? - PullRequest
0 голосов
/ 09 июля 2010

Я удаляю текстовый фрагмент (из IE) с веб-страницы, которая также может содержать ссылки.

string _rtf = (string) data.GetData ("Rich Text Format");RichTextBox box = new RichTextBox ();box.DetectUrls = true;box.SelectedRtf = _rtf;box.SelectAll ();_rtf = box.SelectedRtf;

Проблема в том, что, когда я сохраняю содержимое расширенного текстового поля, ссылки не остаются, они изменяются на обычный текст.Как мне сохранить работоспособность ссылок и сохранить текст в файле RTF или DOC?

Я использую функцию HandleDropEvent для обработки перетаскивания, которое выглядит следующим образом:

защищенное переопределение bool HandleDropEvent(DragEventArgs e) {

        bool result = false;

        if (e.Data.GetDataPresent(DataFormats.Text))
        {
            System.Windows.Forms.IDataObject data = e.Data;
            if (data.GetDataPresent("Rich Text Format"))
            {

            string _rtf = (string) data.GetData("Rich Text Format");                 
            RichTextBox box = new RichTextBox();
            box.DetectUrls = true;
            box.Text = _rtf;
            box.SelectedRtf =_rtf;
            box.SelectAll();                
            _rtf = box.SelectedRtf;
            box.SaveFile("filename.rtf", RichTextBoxStreamType.RichText);
            result = true;
            }
        }

        return result;
    }

Ответы [ 2 ]

0 голосов
/ 13 июля 2010

решено !! Сначала я сохранил ее как HTML-страницу, а затем программно открыл ее по слову и сохранил как файл RTF. Компонент Word произвел полное преобразование.

защищенное переопределение bool HandleDropEvent (DragEventArgs e) {

    bool result = false;

    if (e.Data.GetDataPresent(DataFormats.Text))
    {
        System.Windows.Forms.IDataObject data = e.Data;
        if (data.GetDataPresent("HTML Format"))
        {

        byte[] rawHtmlBytes = HtmlFromIDataObject.GetHtml(data);
        string _html = Encoding.UTF8.GetString(rawHtmlBytes);

        object vk_missing = System.Reflection.Missing.Value;
        //1.Save the html file (in %temp% folder) 
        string    file = IOUtil.CreateTextFile(_html, ".html");

        object oFile = file;
        Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();

        //2.open the html file
        Microsoft.Office.Interop.Word.Document doc = wordApp.Documents.Open(ref oFile, ref
                vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing,
                ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref  vk_missing,
                ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing);

        //3.saving as rtf
        string directory = Path.GetDirectoryName(file);
        string fileName = Path.GetFileNameWithoutExtension(file);
        file = Path.Combine(directory, fileName+ "_" + ".rtf");

        object oSave = file;
        doc.SaveAs(ref oSave, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing);

        result = true;
        }
    }

    return result;
}
0 голосов
/ 09 июля 2010

Если в своем вопросе вы имеете в виду, что ваш код загрузки работает, и вы видите ссылки, то следующий код сохранения не работает для вас?

box.SaveFile("filename.rtf", RichTextBoxStreamType.RichText);
...