我希望文本框只接受波斯语字母,并且不接受C#中的任何符号。任何人都可以帮我处理代码吗?
答案 0 :(得分:3)
这可能就是你要找的东西:
// Only allows "Persian characters" and "Space".
private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Regex.IsMatch(e.KeyChar.ToString(), @"\p{IsArabic}")
&& !string.IsNullOrWhiteSpace(e.KeyChar.ToString()))
e.Handled = true;
}
// Only allows "Persian characters", "Space" and "Numbers".
private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Regex.IsMatch(e.KeyChar.ToString(), @"\p{IsArabic}")
&& !string.IsNullOrWhiteSpace(e.KeyChar.ToString())
&& !char.IsDigit(e.KeyChar))
e.Handled = true;
}
Unicode标准中的特定字符集占用特定范围或连续代码点块。例如,基本的拉丁字符集可以从\u0000
到\u007F
找到,而阿拉伯字符集可以从\u0600
到\u06FF
找到。
正则表达式构造
\p{ name }
匹配属于Unicode常规类别或命名块的任何字符。
您可以阅读有关Unicode Block here的更多信息。
答案 1 :(得分:1)
您必须为文本框添加事件。你想要的是KeyPress活动。
请参阅DotNet Perls中的本教程。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !e.KeyChar <= 'BiggestPersianChar' && !e.KeyChar >= 'SmallesPersianChar';
}
目前我不知道最大的波斯字母和最小的字母。但我希望你知道。
编辑:
我猜这些是最大和最小的字符。大小都意味着它的Unicode。
e.Handled = !e.KeyChar <= 'ی' && !e.KeyChar >= 'ا';