2016-05-20 58 views
0
private void inputBox_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     stringScan(); 
     var regex1 = new Regex(@"[^+^\-^\b^\r\n]"); 
     var regex2 = new Regex(@"[^0-9^+^\-^/^*^#^\b^\r\n]"); 

     if (ListBox.Items.Count == 0 && string.IsNullOrWhiteSpace(inputBox.Text)) 
     { 
      if (regex1.IsMatch(e.KeyChar.ToString())) 
      { 
       e.Handled = true; 
       toolTip1.Show("Plus or minus first then followed by numbers.", inputBox, 1500); 

      } 
     } 
     else 
     { 
      if (regex2.IsMatch(e.KeyChar.ToString())) 
      { 
       e.Handled = true; 
      } 
     } 

    } 

    public void stringScan() 
    { 
     char last_char = inputBox.ToString()[inputBox.ToString().Length - 1]; 
     Console.WriteLine(last_char); 
    } 

我怎样才能得到一个字符串的最后一个字母/数字?它很难解释,所以我会显示一些截图。c#TextBox如何获得一个字符串的最后一个字母?

This is the input

and this is the output

输出应显示 “0” 而不是 “1”。 它总是显示“预览最后”,而不是我在文本框中输入的最新一个。

+0

尝试'$'... ........... –

+0

单行文本框末尾没有换行 – BugFinder

+0

'myString [myString.Length-1]'没有返回最后一个字符吗? – x13

回答

4

请记住,当引发事件inputBox_KeyPress时,键入的键未添加。此外,不要使用正则表达式。它会过于复杂。

尝试TextChanged事件。

0

文本框关键的变化将每ú改变文本框的内容

所以对于ü输入u,将调用串扫描

如果你知道这可以限制每一个值时执行什么文本的长度将变为

0

那你试试这个:

public void stringScan() 
{ 

    String last_char = inputBox.ToString(); 
    Console.WriteLine(last_char[last_char.Length-1]); 
} 
+0

它是如何区别的? –

+0

由于我无法确定潜在的问题,我的第一个想法是他在输入框中调用了错误的文本部分。 他的问题字面上是:“我怎样才能得到一个字符串的最后一个字母/数字?” 这是如何,如果我没有误会.. –

0

如果你想最后键入字符我建议:

private void inputBox_PreviewTextInput(object sender, TextCompositionEventArgs e) 
{ 
      Console.WriteLine(e.Text); 
} 

如果你想在文本框中最后一个字符我建议TextChanged事件由吉荣面包车已经告诉兰根:

private void inputBox_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    string inputString = ((TextBox)sender).Text; 
    char lastChar = inputString.Last(); 
    Console.WriteLine(lastChar); 
} 

希望代码示例帮助你

编辑: 现在,我得到,你可能想从文本框获取整数,如果是这样的事,Get integer from Textbox可以帮助你,代码示例:(?S)。

private void inputBox_TextChanged(object sender, TextChangedEventArgs e) 
    { 
     string inputString = ((TextBox)sender).Text; 

     int valueFromTextBox; 
     if (int.TryParse(inputString, out valueFromTextBox)) 
     { 
      //parsing successful 
     } 
     else 
     { 
      //parsing failed. 
     } 
    } 
相关问题