-2

我有数字按钮,按下时会在不同的文本框中显示数字。现在我的问题是我想检查哪个文本框有焦点,以便在该文本框中输入按下的数字。我的代码:

private void btn_one_Click(object sender, EventArgs e)
{
    if (txt_one.Focused==true)
    {
        txt_one.Text += btn_one.Text;
    } 
    else if (txt_two.Focused==true)
    {
        txt_two.Text += btn_one.Text;
    }
}

现在我的问题是上面的代码不起作用什么是错的,解决方案是什么?我什至用过这样的东西

private void btn_one_Click(object sender, EventArgs e)
{
    if (txt_one.Focus()==true)
    {
        txt_one.Text += btn_one.Text; 
    }
    else if (txt_two.Focus()=true)
    {
        txt_two.Text += btn_one.Text;
    }
}

在上述两种情况下,文本都在两个文本框中输入。任何解决方案。

4

1 回答 1

3

这个问题有点棘手(以我处理Enter, Focus, LostFocus, Leave事件的经验,所有这些事情有时会让你很头疼,你应该尽可能避免处理它们),当你点击你的时Button,你可以知道的当前Focused控件正是Button(ActiveControl是访问它的一种简短方法) 。所以解决方案是我们必须记录focused的轨迹TextBox,将其保存在reference中并在需要时使用它。事实上,如果不是你的一个控件TextBoxes是焦点,我们必须将变量重置lastFocused为 null:

TextBox lastFocused;
//Enter event handler for all your TextBoxes
private void TextBoxes_Enter(object sender, EventArgs e){
  lastFocused = sender as TextBox;
}
//Click event handler for your button
private void btn_one_Click(object sender, EventArgs e){
  if(lastFocused != null) lastFocused.Text += btn_one.Text;
}
于 2013-08-21T17:59:35.440 回答