有人知道当用户权限在文本框中单击并单击粘贴时会触发什么事件吗?我正在try 捕获粘贴,这样我就可以模拟当用户通过输入从文本框激发TextChanged事件时发生的事情.
有人知道当用户权限在文本框中单击并单击粘贴时会触发什么事件吗?我正在try 捕获粘贴,这样我就可以模拟当用户通过输入从文本框激发TextChanged事件时发生的事情.
正如JIMI提到的,您可以使用简单的定制将PasteDetected
事件添加到TextBox
,并(如果您 Select )拦截它以防止粘贴发生.
class TextBoxEx : TextBox
{
const int WM_PASTE = 0x0302;
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_PASTE:
var e = new PasteDetectedEventArgs();
PasteDetected?.Invoke(this, e);
if (e.Cancel)
{
m.Result = (IntPtr)1;
return;
}
break;
default:
break;
}
base.WndProc(ref m);
}
public event EventHandler<PasteDetectedEventArgs> PasteDetected;
}
public class PasteDetectedEventArgs : EventArgs
{
public bool Cancel { get; set; }
}
一旦检测到,你只需判断Clipboard
看看内容是什么(如果这是你关心的事情).
public MainForm()
{
InitializeComponent();
textBox.PasteDetected += (sender, e) =>
{
e.Cancel = true; // Disallow the paste.
// Putting the cancel option in the event argument carries a risk, so
// do 'not' do anything in this handler that would block WndProc!!!
BeginInvoke(()=>MessageBox.Show(Clipboard.GetText(), "Paste Detected"));
};
This WORKS for context menu paste.个