禁用通过按键粘贴到文本框
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.Control
和 e.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;
}
}
我已将以下方法分配给我的所有
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.Control
和 e.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;
}
}