我觉得我可能只是缺少一个简单的属性,但你能否将光标设置到文本框中某行的末尾?
private void txtNumbersOnly_KeyPress(object sender, KeyPressEventArgs e)
{
if (Char.IsDigit(e.KeyChar) || e.KeyChar == '\b' || e.KeyChar == '.' || e.KeyChar == '-')
{
TextBox t = (TextBox)sender;
bool bHandled = false;
_sCurrentTemp += e.KeyChar;
if (_sCurrentTemp.Length > 0 && e.KeyChar == '-')
{
// '-' only allowed as first char
bHandled = true;
}
if (_sCurrentTemp.StartsWith(Convert.ToString('.')))
{
// add '0' in front of decimal point
t.Text = string.Empty;
t.Text = '0' + _sCurrentTemp;
_sCurrentTemp = t.Text;
bHandled = true;
}
e.Handled = bHandled;
}
在以'.'作为第一个字符进行测试后,光标会放在所添加的文本之前。因此,即使没有手动移动光标,结果也会变成"1230."而不是"0.123"。
如果这是一个重复的问题,我也向您道歉。