通过按键禁用在文本框上粘贴

ng8*_*92b 0 c# keypress

我已将以下方法分配给我的所有

    private void textBox18_KeyPress_1(object sender, KeyPressEventArgs e)
    {
        char a = Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);


        if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) &&
          (e.KeyChar != a))
        {
            e.Handled = true;
        }

        // only allow one decimal point 
        if ((e.KeyChar == a) && ((sender as TextBox).Text.IndexOf(a) > -1))
        {
            e.Handled = true;
        }


    }
Run Code Online (Sandbox Code Playgroud)

它基本上允许一个小数分隔符(任何类型),并且只允许数字。我宁愿在这种方法上禁用“粘贴”。这可能吗?

我知道有些用户可能会将我重定向到这里

如何使用 C# 禁用文本框上的复制、粘贴和删除功能

但我的代码无法识别e.Controle.KeyCode. 即使我using Windows.Forms在表单开头添加。即便如此,我也不知道这些解决方案是否有效。

Gra*_*ICA 5

这些属性在KeyPress事件中不可用:

KeyPress 事件不是由空格和退格键以外的非字符键引发;但是,非字符键确实会引发 KeyDown 和 KeyUp 事件。

订阅KeyDown事件,您可以在其中访问用户碰巧按下的任何修饰键(control、alt、shift)。

 private void textBox18_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.Modifiers == Keys.Control && e.KeyCode == Keys.V)
     {
         // cancel the "paste" function
         e.SuppressKeyPress = true;
     }
 }
Run Code Online (Sandbox Code Playgroud)