菜鸟用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} ");
}
}