如题?

解决方案 »

  1.   

    那不是有backspace键嘛?不需要你做
      

  2.   

    你如果在keypress里面清空textBox那就只有当前输入的字符
      

  3.   

    用个变量当计数器,第一次Textbox的TextChanged事件,清空文本框
    public static int countIndex = 0;private void Form1_Load(object sender, EventArgs e)
    {
        textBox1.Focus();
    }
    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        if (countIndex == 0)
        {
            textBox1.Text = "";
            countIndex++;
         }
    }
      

  4.   

    我只能想到用定时器timer的方法,利用用户第二次操作的间隔
    private Timer timer;
            private bool isNeedClear;
            
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                if (timer == null)
                {
                    timer = new Timer();
                    timer.Interval = 1000;//如果1秒没有操作,下一次文字输入时清空输入框
                    timer.Tick += (senderTimer, eTimer) =>
                    {
                        isNeedClear = true;
                    };
                }
                timer.Enabled = false;
                if (isNeedClear)
                {
                    (sender as TextBox).Text = string.Empty;
                    isNeedClear = false;
                }
                timer.Enabled = true;
            }
      

  5.   

    //突然想到,如果用时间间隔的方法,根本就不用定时器,只是要一个时间变量记录最后一次输入的时间
    private DateTime lastInputTime;
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                if (lastInputTime.AddSeconds(1) < DateTime.Now)
                {
                    (sender as TextBox).Text = string.Empty;
                }
                lastInputTime = DateTime.Now;
    }
      

  6.   

    在11楼的基础上,增加一个string lastInputString,记录上一次输入文字的长度,然后现在的文字减去之前的文字,即可。但有个新问题,做减法的时候,再次引发了TextChanged事件,所以会不断的减,直到抛出异常,因此引入一个临时变量,记录上次输入的时间,具体代码如下:DateTime temp = this.lastInputTime;
                this.lastInputTime = DateTime.Now;
                if (temp.AddSeconds(1) < DateTime.Now)
                {
                    
                    (sender as TextBox).Text = (sender as TextBox).Text.Remove(0, this.lastInputString.Length);
                }
                this.lastInputTime = DateTime.Now;
                this.lastInputString = this.textBox1.Text;