如何检查剪贴板与按键已经执行的检查相同

本文关键字:检查 执行 何检查 剪贴板 | 更新日期: 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);
            }
        }
    }
}