日期:2014-05-19  浏览次数:20818 次

菜鸟用c#做winform程序,窗体上放了好多的textbox控件,用户让我弄成按回车就模拟tab键。。。。
菜鸟用c#做winform程序,窗体上放了好多的textbox控件,用户让我弄成按回车就模拟tab键,我把每个控件的tabindex的顺序都设好了,并且在每个textbox控件的
KeyDown事件下写了代码:
                        if   (e.KeyCode   ==   Keys.Enter)
                        {
                                SendKeys.Send( "{TAB}+{HOME} ");
                        }  
这样我就实现了,但是好累啊,能否不用在每个textbox的事件下写代码就可以实现的办法,菜鸟的其他窗体有好多textbox控件呢,,高手,帮忙啊!!!

------解决方案--------------------
用同一个委托就行了

this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown);
.
.
.this.textBox20.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown);

这样就写一个事件处理代码就行了
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{

}


------解决方案--------------------
在窗体的代码里粘贴如下的代码就可以了:

protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == Keys.Enter && this.ActiveControl is TextBox)
{
keyData = Keys.Tab;
}
return base.ProcessDialogKey(keyData);
}

------解决方案--------------------
用不着每个都写,你写一个就可以了,写了第一个,然后把所有textbox控件的KeyDown事件都指向第一个KeyDown事情就可以了,方法如下:
1,写了第一个KeyDown完成
2,选定所有textbox控件,进入事情编辑器中找到KeyDown事件
3,在KeyDown下拉框中选中第一个的KeyDown事情然后确定就可以了
这样也可以,你试一下吧!!!
------解决方案--------------------
Form的KeyPreview设置为true
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
SendKeys.Send( "{TAB} ");
}
}