winfrom 限制文本框小数点后两位

时间:2023-03-09 08:06:59
winfrom 限制文本框小数点后两位
 private void numWeight_KeyPress(object sender, KeyPressEventArgs e)
{ if (char.IsNumber(e.KeyChar) || e.KeyChar == '.' || e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Delete)
{
e.Handled = false; //让操作生效
int j = ; //记录小数点个数
int k = ; //记录小数位数
int dotloc = -; //记录小数点位置
bool flag = false; //如果有小数点就让flag值为true
for (int i = ; i < numWeight.Text.Length; i++)
{
if (numWeight.Text[i] == '.')
{
j++;
flag = true;
dotloc = i;
}
if (flag)
{
if (char.IsNumber(numWeight.Text[i]) && e.KeyChar != (char)Keys.Back && e.KeyChar != (char)Keys.Delete)
{
k++;
}
}
if (j >= )
{
if (e.KeyChar == '.')
{
if (numWeight.SelectedText.IndexOf('.') == -)
e.Handled = true;//输入“.”,选取部分没有“.”操作失效
}
}
if (!flag) //此处控制没有小数点时添加小数点是否满足两位小数的情况
{
if (e.KeyChar == '.')
{
if (numWeight.Text.Length - numWeight.SelectionStart - numWeight.SelectedText.Length > ) //the condition also can be instead of "textBox1.Text.Substring(textBox1.SelectionStart).Length-textBox1.SelectionLength>2"
e.Handled = true;
}
}
if (k == )
{
if (numWeight.SelectionStart > numWeight.Text.IndexOf('.') && numWeight.SelectedText.Length == && e.KeyChar != (char)Keys.Delete && e.KeyChar != (char)Keys.Back) //如果已经有两位小数,光标在小数点右边,
e.Handled = true;
}
}
}
else
{
e.Handled = true;
}
}