如何通过按键启动来访问文本框?

时间:2013-03-31 21:39:34

标签: c# winforms

所以我在 c#项目(winforms)中工作,所以我的项目中有很多文本框,当我按下 up 时,我想要一个特定的文本框让我说textbox1增加他的价值,我已经使用了事件OnKeyUp,但问题是我有很多文本框,所以我必须点击这个TextBox1开始操作,所以请如果有人有任何想法,我将非常感激。

这是我的代码:

//Action speed up
private void TxBoxKeyUp_KeyUp(object sender, KeyEventArgs e)
{
    TxBoxKeyUp.Text = (speed+=5).ToString();
    LbSpeed.Text = TxBoxKeyUp.Text;
}

2 个答案:

答案 0 :(得分:1)

如果要为表单上的每个控件处理KeyUp事件,则可以将Form.KeyPreview属性设置为True。 然后为表单添加KeyUp事件处理程序,并在此事件中更新文本框的内容

private void Form1_KeyUp(object sender, KeyEventArgs e)
{
    TxBoxKeyUp.Text = (speed+=5).ToString();
    LbSpeed.Text = TxBoxKeyUp.Text;
}

如果您的目的是捕获每个KeyUp,无论控件是事件触发时的聚焦控件,这都可以正常工作。如果只有当控件聚焦的是TextBox时才需要获取键盘,那么解决方案就更复杂了。您需要method like the one explained in this question来获取当前的焦点控件,然后检查它是否是文本框。

答案 1 :(得分:0)

您可以将文本框定义为数组,然后使用委托。

假设你有一个keyup事件 TxBoxKeyUp_KeyUp 和一组文本框 txtarr

foreach (TextBox txt in txtarr)
    txt.KeyUp += new KeyEventHandler(TxBoxKeyUp_KeyUp);

因此,您可以使用单个函数处理所有文本框keyup事件。