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的方法,但是这样做有些不好,即使上面的方法也没有带来很好的视觉效果(尝试将文本粘贴到文本中时,您可以看到文本发生了变化并恢复为有效值)数字文本框).


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部