//测试事件代码
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
            if ((e.Control) && (e.KeyCode == Keys.Enter))
            {
                label1.Text = textBox1.Text;
                textBox1.Clear();
            }  
        }效果是ctrl+enter后textbox里面多一行.
观察了很久,觉得是执行顺序的问题.
因为在if里面加messagebox.show(),发现textbox里面已经换行了.确定了messagebox后,正常.
曾加timer让textBox1.Clear()延时执行.
有效果,timer时间间隔太长不好,太短的话失效的可能也越大.
请教各位这个问题该如何才能完美解决?

解决方案 »

  1.   

    那就在textBox1.Clear();后面在加一句去掉空格或换行符不就行了?
      

  2.   

    在textBox1.Clear();下面加textBox1.Clear();或者textBox1.Text="";都不行.
    不过我刚用一个新的方法,好像效果很好:
    在textBox1.KeyUp里面识别到ctrl+enter后清空textBox1        private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {            if ((e.Control) && (e.KeyCode == Keys.Enter))
                {
                    label1.Text = textBox1.Text;
                }          }        private void textBox1_KeyUp(object sender, KeyEventArgs e)
            {
                if ((e.Control) && (e.KeyCode == Keys.Enter))
                {
                    textBox1.Clear();
                }  
            }同时又有一个问题.在按完ctrl+enter后先放掉ctrl就不会触发KeyUp事件,也就根本不清空.
    QQ不存在这个问题.