c# 的取负数_C#文本框中的负数

尝试这个:

Regex reg = new Regex(@"^-?\d+[.]?\d*$");

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

{

if (char.IsControl(e.KeyChar)) return;

if (!reg.IsMatch(textBox1.Text.Insert(textBox1.SelectionStart, e.KeyChar.ToString()) + "1")) e.Handled = true;

}

对于keyboardP的建议,我添加了这段代码以完全防止非数字值,我认为您应该尝试TextBox.ShortcutsEnabled = false;.因为我认为用户不需要任何形式的复制和粘贴数字数据.

Regex reg = new Regex(@"^-?\d+[.]?\d*$");

bool textChangedByKey;

string lastText;

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

{

if (char.IsControl(e.KeyChar)) return;

if (!reg.IsMatch(textBox1.Text.Insert(textBox1.SelectionStart, e.KeyChar.ToString()) + "1"))

{

e.Handled = true;

return;

}

textChangedByKey = true;

}

private void textBox1_TextChanged(object sender, EventArgs e)

{

if (!textChangedByKey)

{

if (!reg.IsMatch(textBox1.Text))

{

textBox1.Text = lastText;

return;

}

}

else textChangedByKey = false;

lastText = textBox1.Text;

}

我尝试过使用Undo()方法和一些重设SelectedText的方法,但是这样做有些不好,即使上面的方法也没有带来很好的视觉效果(尝试将文本粘贴到文本中时,您可以看到文本发生了变化并恢复为有效值)数字文本框).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值