-1

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

这是我的代码:

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

2 回答 2

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 时才需要获取键,则解决方案会更复杂。您需要一种类似于此问题中解释的方法来获取当前的焦点控件,然后检查它是否是文本框。

于 2013-03-31T21:42:13.907 回答
0

You can define your textboxes as a array and then use delegate.

lets assume you have a single keyup event TxBoxKeyUp_KeyUp and a array of textboxes txtarr

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

So you can handle all the textboxes keyup event with a single function.

于 2013-03-31T21:58:00.847 回答