我想将我的文本框限制为波斯语字母,我该怎么做?在C#中

时间:2015-06-27 05:22:47

标签: c# textbox

我希望文本框只接受波斯语字母,并且不接受C#中的任何符号。任何人都可以帮我处理代码吗?

2 个答案:

答案 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中的本教程。

  

C# TextBox Tutorial: TextChanged and KeyDown

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = !e.KeyChar <= 'BiggestPersianChar' && !e.KeyChar >= 'SmallesPersianChar';
}

目前我不知道最大的波斯字母和最小的字母。但我希望你知道。

编辑:

我猜这些是最大和最小的字符。大小都意味着它的Unicode。

e.Handled = !e.KeyChar <= 'ی' && !e.KeyChar >= 'ا';