我有一段代码可以检查输入到文本框中的每个字符,如果它只是一个数字,它会弹出一个msg框,说"空白"不是数字。在此之后,它将光标重置到文本框的开头,我希望将光标放在文本框的当前文本的末尾。
string actualdata = string.Empty;
char[] entereddata = txfanrpm.Text.ToCharArray();
foreach (char aChar in entereddata.AsEnumerable())
{
if (Char.IsDigit(aChar))
{
actualdata = actualdata + aChar;
}
else
{
MessageBox.Show(aChar + " is not numeric");
actualdata.Replace(aChar, ' ');
actualdata.Trim();
}
}
答案 0 :(得分:3)
只需将选择开始设置为文本长度:
txfanrpm.SelectionStart = txfanrpm.TextLength;
注意:您不需要将文本转换为char数组 - 字符串已经是IEnumerable<char>
foreach(char ch in txfanrpm.Text)
{
if (!Char.IsDigit(ch))
{
MessageBox.Show(ch + " is not numeric");
continue;
}
actualdata += ch;
}
替代解决方案 - 两个循环,但更有效的字符串创建:
foreach(char ch in txtfanrpm.Where(c => !Char.IsDigit(c)))
MessageBox.Show(ch + " is not numeric");
string actualdata = new String(txtfanrpm.Text.Where(Char.IsDigit).ToArray());