Как определить Ctrl + V в Silverlight 4? - PullRequest
5 голосов
/ 02 июня 2010

Каков наилучший способ обнаружения Ctrl + V в Silverlight?

Я хочу обнаружить Ctrl + V , чтобы получить доступ к буферу обмена.

Ответы [ 2 ]

6 голосов
/ 08 июля 2010
if (e.Key == Key.V)
{
    if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
    {
        //do what you want on paste
    }
}

Вы должны использовать это в событии keyUp. Более подробную информацию можно найти здесь: http://msdn.microsoft.com/en-us/library/cc189015%28VS.95%29.aspx

0 голосов
/ 02 июня 2010

РЕДАКТИРОВАТЬ

Чтобы зафиксировать нажатие клавиши CTRL + V глобально в приложении Silverlight, это сопряжено с трудностями. События начинаются с дочерних элементов и переходят к родительским элементам управления, поэтому простая обработка KeyDown в корневом UIElement не будет работать. Любой элемент управления вводом текста сначала получает событие и подавляет его (устанавливая Handled в значение true для аргументов события.) Я думаю, что если вы используете мост DOM и подпишете обработчик на событие браузера KeyDown для самого элемента silverlight, то вы на самом деле быть в состоянии добраться до него в первую очередь, и даже справиться с ним полностью, прежде чем любой элемент управления Silverlight может. Я думаю, что это был бы самый простой способ перехватить CTRL + V , но я не проверял это.

Оригинальный ответ

Вы должны использовать класс System.Windows.Clipboard .

  • GetText, который извлекает текст из в буфер обмена
  • SetText, какие места текст в буфер обмена
  • ContainsText, который указывает, находится ли в буфере обмена в настоящее время содержит текст
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...