我试图在继承的TextEdit中捕获粘贴操作,但CTRL-V没有被捕获。
我有这个
private const int WM_PASTE = 0x0302;
protected override void WndProc(ref Message message)
{
if (message.Msg == WM_PASTE)
{
// my code
}
base.WndProc(ref message);
}
字符串
如果我做鼠标右键/粘贴比我把它变成my code
如果我做SHIFT-A,那么我就把它变成my code
但是如果我做CTRL-V,那么我don't
就变成了my code
我发现同样的问题与接受的答案here,但它是在VB和当我尝试它不工作。我不知道VB,但像我理解这个答案的代码将只执行CTRL或只是V,这不是我想要的。
我根据这个答案修改后的代码是
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (((Control.ModifierKeys & Keys.Control) == Keys.Control) && (keyData == Keys.V))
{
// my code
}
return base.ProcessCmdKey(ref msg, keyData);
}
型
但是我从来没有用这个代码到my code
那么WM_PASTE(302)是否还有其他消息需要侦听?
或者什么是正确的方式来捕获所有粘贴事件在我继承的文本框?
1条答案
按热度按时间c0vxltue1#
我找到问题所在了。
TextEdit是一个DevExpress TextEdit,似乎如果你放一个RegEx类型的maskedit,它就不再接受Ctrl-V了。
在他们的论坛上,我可以看到这个问题在2018年已经被发现并被修复,但它似乎又回来了。
我现在正在等待他们的支持来帮助我。