c# - 限制文本框中的某些字符

时间:2016-05-11 00:30:58

标签: c# winforms text count character

我正在尝试限制文本框中某个字符(在我的例子中是逗号(,))的数量。我希望它只允许文本框中最多9个逗号。如果用户尝试添加超过9的逗号,则应显示带有错误的消息框,然后也不允许用户在文本框中输入更多内容。

在我的应用程序中,我允许用户将10个标签添加到以逗号分隔的文本框中。

用户输入的示例可能如下所示:summer,sexy,hot,beautiful,girls,guys,food,music,funny,lol

这是文本框中允许的标记的最大限制(9个逗号)。 当他们达到这个限制时,它应该阻止他们输入任何逗号。我希望我很清楚。

到目前为止,这是我的代码。我的文本框叫做tagBox。

private void tagBox_TextChanged(object sender, EventArgs e)
        {
            // Allow max 10 tags in the tag box
            string tags = tagBox.Text;
            int count = tags.Split(',').Length - 1;
            if (count > 9)
            {
                MessageBox.Show("Max 10 tags are allowed.", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

我只设法让消息框出现。但是如何阻止他们输入更多逗号?

2 个答案:

答案 0 :(得分:0)

看起来应该是这样的:

private void tagBox_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
    // Allow max 10 tags in the tag box
    string tags = tagBox.Text;
    int count = tags.Split(',').Length - 1;
    if (count > 9 && e.KeyChar == ',')
    {
        e.Handled = true;
        MessageBox.Show("Max 10 tags are allowed.", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    }
    else        
        e.Handled = false;
}

答案 1 :(得分:0)

我认为你应该做这样的事情

    Public class TagTextBox : TextBox
    {
        Public override OnKeyDown(object sender, KeyEventArgs args)
        {
            // Do logic here
            // Call this to accept Key
            base.OnKeyDown(sender, args);
         }
    }