WinProc并覆盖on paste方法

时间:2013-11-19 19:43:14

标签: c# winforms winapi

我试图使用以下方法覆盖winform文本框的onpaste方法:

Override Paste Into TextBox

当粘贴发生时,我不希望Windows处理它我想要我的代码。所以我做了以下事情:

        if (m.Msg == WM_PASTE)
        {
            var evt = Pasted;
            if (evt != null)
            {
                evt(this, new ClipboardEventArgs(Clipboard.GetText()));
            }
        }
        else
        {

            base.WndProc(ref m);
        }

这是一种安全的方法来让win32代码无法处理粘贴,还是有些情况我没看到?

1 个答案:

答案 0 :(得分:0)

您应该使用此模式来定义粘贴事件:

public event ClipboardEventHandler Pasted;

protected virtual void OnPasted(ClipboardEventArgs e)
{
    if (Pasted != null)
        Pasted(this, e);
}

然后你调用OnPasted而不是直接调用事件,因此派生类可以控制功能。