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