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);
}
如何获取字符串的最后一个字母/数字?它很难解释,所以我会展示一些截图。
输出应显示" 0"不是" 1"。 它始终显示"预览最后"而不是我在文本框中输入的最新内容。
答案 0 :(得分:4)
请记住,当引发事件inputBox_KeyPress
时,尚未添加键入的键。另外,不要使用正则表达式。它会过于复杂。
尝试TextChanged
事件。
答案 1 :(得分:0)
每次更改文本框的内容时都会执行文本框键更改
因此,对于您输入的每个值,您将调用字符串扫描
如果您知道文本的长度
,这可能会受到限制答案 2 :(得分:0)
你怎么试试这个:
public void stringScan()
{
String last_char = inputBox.ToString();
Console.WriteLine(last_char[last_char.Length-1]);
}
答案 3 :(得分:0)
如果您想要最后输入的字符,我建议:
private void inputBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
Console.WriteLine(e.Text);
}
如果您想要文本框中的最后一个字符,我建议Jeroen van Langen已经告知了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可以帮助你,代码示例:
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.
}
}