c#中只允许输入一个字符的一个实例
本文关键字:一个 字符 实例 输入 许输入 | 更新日期: 2023-09-27 18:06:57
我想只允许一个字符的实例按顺序出现在文本框中。换句话说,我希望防止用户在文本框中输入连续重复的字符。例如,如果我要编写一个计算器程序,我希望防止用户意外输入((
而不是(
。
您可以检测文本框的keydown事件。在事件中,你检查最后一个和第二个字符看是否相同。如果是相同的,您可以删除字符串的最后一个字符。
但是请记住,当您的用户将整个字符串粘贴到文本框中时,上述方法会出现问题。
对于任何类似文本框的对象,函数看起来都是一样的,但是要附加的事件当然会有所不同。假设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;
}
}
}