禁用通过按键粘贴到文本框

Disable paste on a textbox via 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;
        }


    }

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

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

how to disable copy, Paste and delete features on a textbox using C#

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

这些属性在 KeyPress event 中不可用:

The KeyPress event is not raised by non-character keys other than space and backspace; however, the non-character keys do raise the KeyDown and KeyUp events.

订阅 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;
     }
 }