//测试事件代码
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时间间隔太长不好,太短的话失效的可能也越大.
请教各位这个问题该如何才能完美解决?
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时间间隔太长不好,太短的话失效的可能也越大.
请教各位这个问题该如何才能完美解决?
不过我刚用一个新的方法,好像效果很好:
在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不存在这个问题.