none
textbox指標刪除問題 RRS feed

  • 問題

  • 各位大大您们好:

             最近我再寫利用key_Press的方式限制輸入資料的格式,我寫好了可以限制輸入數字的大小,可是當使用者使用到退鍵的時候,我的程式會自動幫我刪除,可我只要刪掉的位置上變成0,但我寫的方法和判斷數字時一樣,所以覺得很怪,因為我不知道寫法哪裡錯了,可是我看不出來,我把我的程式碼貼出來,希望各位大大可以給予我幫助,謝謝(我用藍色的地方,就是他會直接幫我刪掉)

     switch (textBox1.SelectionStart)
                {
                    case 0:
                        if ((e.KeyChar < '0' || e.KeyChar > '2') && (e.KeyChar != '\b'))
                            e.Handled = true;
                        else if (e.KeyChar == '\b')
                            e.Handled = true;
                        else
                        {
                            textBox1.Select(0, 1);
                            textBox1.Text.Replace(textBox1.SelectedText, e.KeyChar.ToString());
                        }
                        break;
                    case 1:                   
                        if (textBox1.Text.Substring(0, 1) == "1" || textBox1.Text.Substring(0, 1) == "0")
                        {
                            if ((e.KeyChar < '0' || e.KeyChar > '9') && (e.KeyChar != '\b'))
                                e.Handled = true;
                            else if ((byte) e.KeyChar == 8)
                            {
                                textBox1.Select(0, 1);
                                textBox1.Text.Replace(textBox1.SelectedText, "0");
                            }
                            else
                            {
                                textBox1.Select(1, 1);
                                textBox1.Text.Replace(textBox1.SelectedText, e.KeyChar.ToString());
                            }
                        }

                      break;

                 }

    2009年1月14日 上午 03:23

解答

  • HI,

     

    如果您是要在使用者按下Backspace時將被刪掉的字元換成0, 可以在TextBox的KeyUp事件做:

    Code Snippet
    private void textBox1_KeyUp(object sender, KeyEventArgs e)
    {
                if (e.KeyCode == Keys.Back)
                {
                    int pos=textBox1.SelectionStart;
                    textBox1.Text = textBox1.Text.Insert(textBox1.SelectionStart, "0");
                    textBox1.SelectionStart += pos;
                }
    }

     

     

     

    tihs

    2009年1月15日 上午 06:49

所有回覆

  • HI,

     

    如果您是要在使用者按下Backspace時將被刪掉的字元換成0, 可以在TextBox的KeyUp事件做:

    Code Snippet
    private void textBox1_KeyUp(object sender, KeyEventArgs e)
    {
                if (e.KeyCode == Keys.Back)
                {
                    int pos=textBox1.SelectionStart;
                    textBox1.Text = textBox1.Text.Insert(textBox1.SelectionStart, "0");
                    textBox1.SelectionStart += pos;
                }
    }

     

     

     

    tihs

    2009年1月15日 上午 06:49
  • 謝謝這位大大的分享,我成功了,謝謝您囉~

    2009年1月19日 上午 01:29