0

申し訳ありませんが、これに関連するさまざまな質問を調べましたが、まだ実装できません。

調べた回答を使用して、これを収集し、このコーディングをテキスト ボックスに適用しました。

private void TxtBox5_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!(Char.IsDigit(e.KeyChar) || (e.KeyChar == (char)Keys.Back)))
            e.Handled = true;
    }

さて、プログラムを実行すると、まだ文字を入力できます。次に何をすべきかわからないので、どんな解決策でも素晴らしいでしょう。ありがとう。

4

5 に答える 5

8

さて、これは私が今作ったものです。テストしたところ 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;
        }

これにより、誰かがテキストボックスに何かを入力するたびにメソッドが起動されます。名前をテキストボックスの名前に変更してください

于 2013-06-01T10:24:09.983 に答える
1

これを試すことができます:

private void TxtBox5_KeyPress(object sender, KeyPressEventArgs e)
{
    if(!(Char.IsDigit(e.KeyChar) || Char.IsControl(e.KeyChar)))
        { e.Handled = true; }
}

これがベストだとは思いませんが、少し手を加えるだけでうまくいくかもしれません。現在、何が機能するかを確認するためのVSがありません。

編集:私の悪い。キープレスではなく、テキストボックスの textchanged イベントで上記のものを使用できると思います。それは解決策というよりも微調整のようなものです。行き詰まり、より良い解決策が得られない場合に、前進させるためだけに。

更新: コードを更新しました。これが役立つかどうかを確認してください。

于 2013-06-01T09:32:09.993 に答える
0

これを試して ...

private void TxtBox5_KeyPress(object sender, KeyPressEventArgs e)
    {         
        int num = 0;
         e.Handled = !int.TryParse(e.KeyChar.ToString(), out num);

    }
于 2013-06-01T09:48:12.403 に答える
0

これを試してください、これがうまくいくことを願っています

   private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        int asciiCode = Convert.ToInt32(e.KeyChar);
        if ((asciiCode >= 48 && asciiCode <= 57))
        {


        }
        else
       {                MessageBox.Show("Not allowed!");
            e.Handled = true;


        }
    }
于 2013-06-01T09:22:12.443 に答える