0

ScintillaNetの Scintilla コントロールを使用していますが、貼り付け操作を制御する必要があります (いくつかのことを確認したり、貼り付けるテキストを更新したりできるようにするため)。

Scintilla コントロールのサブクラスを作成し、WndProc メソッドをオーバーライドしようとしました。次に、WM_PASTE メッセージ (0x0302) を傍受しましたが、うまくいきませんでした。私はそれを決して捕まえません。

私が使用するコードは次のとおりです。

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

何か案が?

4

1 に答える 1

4

ScintillaNET の組み込みの CTRL+V ハンドラーを次のように削除できます。

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

そして、独自の CTRL+V ハンドラー (メニュー項目?) を追加して、次のことを行います。

ScintillaNet.Selection.Text = your_processed_clipboard_data;

これは、現在のカーソル位置に挿入するか、現在の選択を置き換えます。

于 2010-12-12T04:11:43.687 に答える