7

我有一个带有 3 个文本框和按钮作为拨号盘的 win 应用程序表单(它是一个触摸屏应用程序).​​..

当按下拨号盘按钮时,我想检查这 3 个文本框中的哪一个具有焦点,并将文本附加到它。

就像是:

if (tbx1.Focused == true)
{
   tbx1.Text += "0";
}
else if (tbx2.Focused == true)
{
   tbx2.Text += "0";
}
else
{
   tbx3.Text += "0";
}

但这不起作用......它一直将文本附加到 tbx3 。有什么建议么?

谢谢 :)

4

1 回答 1

15

当您单击按钮时会出现问题,按钮将获得焦点,而不是您的任何文本框。

您可以做的是订阅LostFocus事件并记住最后获得焦点的文本框。

就像是:

private TextBox lastFocused;
private void load(object sender, EventArgs e){
    foreach (TextBox box in new TextBox[] { txtBox1, txtBox2, txtBox3 }){
        box.LostFocus += textBoxFocusLost;
    }
}

private void textBoxFocusLost(object sender, EventArgs e){
    lastFocused = (TextBox)sender;
}
于 2012-08-17T11:44:01.483 回答