c# keydown事件问题
privatevoidtextBox1_KeyDown(objectsender,KeyEventArgse){if(e.KeyCode==Keys.Space){tex...
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{ textBox1.Text = "Space"; }
}
textbox1里面按下空格键后显示的是“一个空格和一个Space”,可我想只显示Space怎么写? 展开
{
if (e.KeyCode == Keys.Space)
{ textBox1.Text = "Space"; }
}
textbox1里面按下空格键后显示的是“一个空格和一个Space”,可我想只显示Space怎么写? 展开
2个回答
展开全部
经过自己的实验和度娘结合,e.handled=true,在KeyPress事件中却可以屏蔽掉“空格”这个键盘输入,在KeyDown中却屏蔽不了,所以你会出现一个控制加一个space的情况。
同样如果你想屏蔽诸如F1,F2这样的功能控制键,则用KeyPress事件则不起作用了,而需要在KeyDown事件中处理,所以这里可以得到一个结论:
1.如果想处理a,b,c,d这样的字符键,则需要用KeyPress事件来处理屏蔽问题。
2.如果想处理F1,F2,F3,F4这样的功能控制键,则需要用KeyDown事件来处理屏蔽问题。
由此可知,space这个键只是普通的字母键,应该由KeyPress处理。如果想屏蔽一切的空格处理。可以重载ProcessCmdKey这个方法。下面的代码是百度来的,实验效果确实可以屏蔽空格的输入,意思是直接不处理。如果修改返回值为false,就是keydown或者keypress里面自己处理。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (msg.Msg == 0x0100 && keyData == Keys.Space)
{ //0x0100即WM_KEYDOWN常数
return true;//按空格键不作处理
}
return base.ProcessCmdKey(ref msg, keyData);
}
同样如果你想屏蔽诸如F1,F2这样的功能控制键,则用KeyPress事件则不起作用了,而需要在KeyDown事件中处理,所以这里可以得到一个结论:
1.如果想处理a,b,c,d这样的字符键,则需要用KeyPress事件来处理屏蔽问题。
2.如果想处理F1,F2,F3,F4这样的功能控制键,则需要用KeyDown事件来处理屏蔽问题。
由此可知,space这个键只是普通的字母键,应该由KeyPress处理。如果想屏蔽一切的空格处理。可以重载ProcessCmdKey这个方法。下面的代码是百度来的,实验效果确实可以屏蔽空格的输入,意思是直接不处理。如果修改返回值为false,就是keydown或者keypress里面自己处理。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (msg.Msg == 0x0100 && keyData == Keys.Space)
{ //0x0100即WM_KEYDOWN常数
return true;//按空格键不作处理
}
return base.ProcessCmdKey(ref msg, keyData);
}
追问
关键是我程序的keydown事件里已经写了很多代码了,而且我程序还有N多个keydown事件,要写在keypress事件里我得做大量的修改还不一定能成功keypress里,所以我才问keydown里怎么写
追答
你可以在keypress里面屏蔽空格,keydown事件可以判断有没有空格就行。
展开全部
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar== 32)
{
e.Handled = true;
textBox2.Text += "Space";
}
}
根据你的条件,屏蔽空格
{
if (e.KeyChar== 32)
{
e.Handled = true;
textBox2.Text += "Space";
}
}
根据你的条件,屏蔽空格
追问
不行啊,我在keydown事件里写的
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
e.Handled = true;
textBox1.Text += "Space";
}
}
还是显示一个空格和一个space啊!!!
在keypress事件里我没试,因为我就想在keydown事件写
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询