c# TextBox 如何获取字符串的最后一个字母?
c# TextBox how to get the last letter of a string?
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);
}
如何获取字符串的最后一个 letter/number?。真的很难解释所以我会展示一些截图。
输出应该显示“0”而不是“1”。
它总是显示 "previews last" 而不是我在文本框中输入的最新一个。
每次更改文本框内容时都会执行文本框键值更改
因此,对于您输入的每个值,您都将调用字符串扫描
如果你知道文本的长度,这可以被限制
请记住,引发事件 inputBox_KeyPress
时,尚未添加键入的密钥。另外,不要为此使用正则表达式。它会过于复杂。
尝试 TextChanged
活动。
你试试这个怎么样:
public void stringScan()
{
String last_char = inputBox.ToString();
Console.WriteLine(last_char[last_char.Length-1]);
}
如果你想要最后输入的字符,我建议:
private void inputBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
Console.WriteLine(e.Text);
}
如果你想要文本框中的最后一个字符,我建议使用 TextChanged 事件,正如 Jeroen van Langen 所说:
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.
}
}
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);
}
如何获取字符串的最后一个 letter/number?。真的很难解释所以我会展示一些截图。
输出应该显示“0”而不是“1”。 它总是显示 "previews last" 而不是我在文本框中输入的最新一个。
每次更改文本框内容时都会执行文本框键值更改
因此,对于您输入的每个值,您都将调用字符串扫描
如果你知道文本的长度,这可以被限制
请记住,引发事件 inputBox_KeyPress
时,尚未添加键入的密钥。另外,不要为此使用正则表达式。它会过于复杂。
尝试 TextChanged
活动。
你试试这个怎么样:
public void stringScan()
{
String last_char = inputBox.ToString();
Console.WriteLine(last_char[last_char.Length-1]);
}
如果你想要最后输入的字符,我建议:
private void inputBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
Console.WriteLine(e.Text);
}
如果你想要文本框中的最后一个字符,我建议使用 TextChanged 事件,正如 Jeroen van Langen 所说:
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.
}
}