Как переопределить операции PASTE в ScintillaNet? - PullRequest
0 голосов
/ 16 сентября 2010

Я использую элемент управления Scintilla из ScintillaNet , и мне нужно иметь некоторый контроль над операциями вставки (чтобы иметь возможность проверить некоторые вещи и / или обновить текст для вставки).

Я попытался создать подкласс элемента управления Scintilla и переопределить метод WndProc.Затем я перехватываю сообщение WM_PASTE (0x0302), не повезло.Я никогда не ловлю это.

Вот код, который я использую:

protected override void WndProc(ref Message m)
{
    if (m.Msg == WM_PASTE)
    {
        MessageBox.Show("Paste");
    }
    base.WndProc(ref m);
}

Есть идеи?

1 Ответ

4 голосов
/ 12 декабря 2010

Вы можете удалить встроенный в ScintillaNET обработчик CTRL + V с помощью:

scintilla.Commands.RemoveBinding(Keys.V, Keys.Control, ScintillaNet.BindableCommand.Paste);

И добавьте свой собственный обработчик CTRL + V (пункт меню?), Чтобы сделать:

ScintillaNet.Selection.Text = your_processed_clipboard_data;

Это вставит в текущую позицию курсора или заменит текущий выбор.

...