如何检查剪贴板与按键已经执行的检查相同
本文关键字:检查 执行 何检查 剪贴板 | 更新日期: 2023-09-27 18:32:04
我没有找到可以验证我正在粘贴的每个字符的事件。我需要使用 ASCII 代码进行验证,因为我想处理 ' 和"
按键事件:
private void txt_KeyPress(object sender, KeyPressEventArgs e)
{
if( e.KeyChar == 34 || e.KeyChar == 39)//34 = " 39 = '
{
e.Handled = true;
}
}
简单的解决方案:
private void txt_TextChanged(object sender, EventArgs e)
{
string text = txt.Text;
while (text.Contains("'"") || text.Contains("'")) text = text.Replace("'"", "").Replace("'", "");
txt.Text = text;
}
可以使用
Clipboard.GetText()
访问剪贴板文本,并且可以通过重写控件的 WndProc 并监视消息0x302 (WM_PASTE) 来截获低级别 Windows 消息。
namespace ClipboardTests
{
using System.Windows.Forms;
public partial class Form1 : Form
{
private MyCustomTextBox MyTextBox;
public Form1()
{
InitializeComponent();
MyTextBox = new MyCustomTextBox();
this.Controls.Add(MyTextBox);
}
}
public class MyCustomTextBox : TextBox
{
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x302 && Clipboard.ContainsText())
{
var cbText = Clipboard.GetText(TextDataFormat.Text);
// manipulate the text
cbText = cbText.Replace("'", "").Replace("'"", "");
// 'paste' it into your control.
SelectedText = cbText;
}
else
{
base.WndProc(ref m);
}
}
}
}