Странное поведение при использовании Drag and Drop in Word 2003 в заголовках - PullRequest
2 голосов
/ 18 марта 2010

Я разрабатываю надстройку на основе шаблонов для Word 2003, которая позволяет пользователю перетаскивать элементы из списка в текстовый документ. К сожалению, я получаю очень странное поведение при попытке добавить элементы в заголовок документа.

  1. Откройте шаблон и введите что-нибудь в шапку
  2. Закройте заголовок и вставьте содержимое на страницу
  3. Добавить разрыв страницы.
  4. Переключение в режим макета страницы и установка уровня масштабирования «Две страницы»
  5. Открыть заголовок
  6. Медленно перетащите элемент списка из списка в заголовок.
  7. Просмотр нескольких диалоговых окон «Настройки страницы», приводящих к сбою Word.

Вот мой код:

// in ThisDocument.cs

public MyUserControl _control;
public void Init()
{
    _control = new MyUserControl();
    ActionsPane.Controls.Add(_control);
    ActionsPane.Visible = true;
}

// in MyUserControl.cs

public void listBox1_MouseDown(object sender, MouseEventArgs e)
{
    DoDragDrop("something", DragDropEffects.Copy);
}

Неужели я что-то не так с реализацией Drag and Drop? Есть ли способ обойти это странное поведение?

Заранее спасибо,
Оливер Ханаппи

Видео

Я сделал небольшое видео, которое показывает ошибку. Вы можете скачать его здесь: http://rapidshare.com/files/364907873/word-2003-bug.rar

К сожалению, инструмент, который я использовал, не заметил, что я изменил настройки дисплея, поэтому, хотя я использовал 1280x768, он записал 1920x1200, извините за странный размер видео. Если вы не можете смотреть видео, возможно, кодек отсутствует. Вы можете получить его здесь: http://camstudio.org/

Я также забыл упомянуть, что эта ошибка также возникает в Word 2007. Поскольку на моем локальном компьютере у меня есть только Word 2007, я записал видео в Word 2007, но в основном это касается Word 2003 (где я нашел ошибка)

Ответы [ 2 ]

1 голос
/ 01 июня 2011

Также происходит в Word 2011 для Mac как с документами DOC, так и с файлами DOCX. Существует также проблема с визуальным дублированием заголовков и артефактов от курсоров. Первые две проблемы были известны проблемы с 2007 для Windows.

1 голос
/ 19 марта 2010

Это работало для меня в Word 2007, но похоже на ужасный обходной путь. Попробуйте использовать буфер обмена, чтобы установить ключевое слово в документе, затем обработайте событие WindowSelectionChange, которое, похоже, надежно срабатывает после вставки текста, чтобы сделать то, что вы действительно хотите сделать.

public void listBox1_MouseDown(object sender, MouseEventArgs e)
{
    Clipboard.SetText("<#KEYWORD#>");
    IDataObject dObject = Clipboard.GetDataObject();

    //This is extremely buggy coming from VSTO, this is why the clipboard is used.
    DoDragDrop(dObject, DragDropEffects.All);
}

void Application_WindowSelectionChange(Microsoft.Office.Interop.Word.Selection Sel)
{
    if (Sel.Range.Text == "<#KEYWORD#>")
    {
        Sel.Range.Text = string.Empty;
        // Do some action
    }
}
...