只允许输入一个字符实例C#

时间:2015-08-09 03:37:20

标签: c#

我想只允许一个字符的一个实例按顺序出现在文本框中。换句话说,我想阻止用户在我的文本框中输入连续的重复字符。例如,如果我要制作计算器程序,我希望阻止用户意外而不是((输入(

2 个答案:

答案 0 :(得分:1)

您可以检测文本框的keydown事件。在这种情况下,您检查最后一个和最后一个字符,看它是否相同。如果它是相同的,你可以删除字符串的最后一个字符。

但请记住,当您的用户将整个字符串粘贴到文本框时,上述方法会出现问题。

答案 1 :(得分:0)

对于任何类似文本框的对象,该函数看起来都是一样的,但当然要附加的事件会有所不同。假设Winforms TextBox,您将附加到TextChanged事件(即mytextbox.TextChanged = mytextbox_TextChanged),该函数将类似于下面的那个:

private void mytextbox_TextChanged(object sender, EventArgs e)
{
    if (mytextbox.Text.Length < 2)  { return; }

    var stringToCheck = mytextbox.Text;
    for (var i = 1; i <= stringToCheck.Length-1; i += 1)
    {
        if (stringToCheck[i].Equals(stringToCheck[i-1])
        {
            mytextbox.Text = stringToCheck.Remove(i, 1);

            // Next two lines put cursor at end of textbox instead of beginning
            mytextbox.SelectionStart = mytextbox.Text.Length;
            mytextbox.SelectionLength = 0;
        }
    } 

}