Буфер обмена Office требует времени, чтобы показать изменения - PullRequest
0 голосов
/ 24 сентября 2010

Я столкнулся с очень странной проблемой в Excel.Я переопределил клавиши CTRL + C и CTRL + V, и при копировании я помещаю свой собственный объект DataObject в буфер обмена, который содержит как форматы Excel, так и мои пользовательские форматы.

Я копирую свои данные в буфер обмена, и онкопируется без проблем.Я также вижу это в буфере обмена Office.Теперь я копирую некоторый текст из-за пределов Excel (из Блокнота) и пытаюсь вставить его в Excel, но Excel вставляет предыдущие данные, которые я скопировал из листа Excel.Я вставляю с помощью метода Worksheet.Paste (...).

После нескольких вставок Excel начинает вставлять новые данные, но они не фиксируются.Иногда я вообще не вижу новые данные, хотя Windows Viewer Clipboard и Office Clipboard отображают новые данные, как только я копирую их из блокнота.

Есть идеи, почему Office тратит время на вставку этих новых данных?

1 Ответ

0 голосов
/ 25 сентября 2010

Excel скорее вставит из своего внутреннего буфера, чем из буфера обмена, поэтому он смотрит на буфер обмена, только если у него есть основания полагать, что он изменился.Если вы вмешиваетесь в цепочку уведомлений буфера обмена, он может не знать об обновлениях.Или он может только проверять наличие обновлений буфера обмена, если он теряет / получает фокус.т. е. если в Excel все еще есть фокус, а ваша надстройка копирует что-то в буфер обмена в фоновом режиме, у нее нет оснований думать, что нужно смотреть в буфер обмена.

...