Okay this is what i made just now, it works 100% just tested it.Note that my textBox is named serialTxtBox, you can change it to yours.
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;
}
}
EDIT: Definitely you are doing something wrong. In your form constructor which is named like your form. In my case SerialGenerator, you need to initialize the event. In my case :
public SerialGenerator()
{
InitializeComponent();
this.serialTxtBox.TextChanged += serialTxtBox_TextChanged;
}
this will fire the method everytime someone enters something in your textBox. Make sure you rename it to your textbox's name