さて、これは私が今作ったものです。テストしたところ 100% 動作します。
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;
}
これにより、誰かがテキストボックスに何かを入力するたびにメソッドが起動されます。名前をテキストボックスの名前に変更してください