好的,这就是我刚才所做的,它 100% 工作,刚刚测试过。注意我的文本框被命名为 serialTxtBox,你可以把它改成你的。
void serialTxtBox_TextChanged(object sender, EventArgs e)
{
bool enteredLetter = false;
Queue<char> text = new Queue<char>();
foreach (var ch in this.serialTxtBox.Text)
{
if (char.IsDigit(ch))
{
text.Enqueue(ch);
}
else
{
enteredLetter = true;
}
}
if (enteredLetter)
{
StringBuilder sb = new StringBuilder();
while (text.Count > 0)
{
sb.Append(text.Dequeue());
}
this.serialTxtBox.Text = sb.ToString();
this.serialTxtBox.SelectionStart = this.serialTxtBox.Text.Length;
}
}
编辑:肯定你做错了什么。在您的表单构造函数中,该构造函数的名称与您的表单相同。在我的情况下 SerialGenerator,您需要初始化事件。就我而言:
public SerialGenerator()
{
InitializeComponent();
this.serialTxtBox.TextChanged += serialTxtBox_TextChanged;
}
每当有人在您的文本框中输入内容时,这都会触发该方法。确保将其重命名为文本框的名称