光标在文本框c中修剪后移动

时间:2014-08-07 16:24:09

标签: c# winforms

我有一段代码可以检查输入到文本框中的每个字符,如果它只是一个数字,它会弹出一个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();
    }
}

1 个答案:

答案 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());