设置在C#Winforms中具有焦点的文本框值

时间:2013-08-21 17:56:23

标签: c# winforms focus

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

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;
    }
}

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

1 个答案:

答案 0 :(得分:3)

这个问题有点棘手(根据我处理Enter, Focus, LostFocus, Leave事件的经验,所有这些事情有时让你头痛很多,如果可能的话,你应该避免与他们打交道),当你点击{{ {1}},您可以知道的当前Button控件恰好是FocusedButton是访问它的一种简短方法)。因此,解决方案是我们必须记录焦点ActiveControl的轨迹,将其保存在参考中并在需要时使用它。实际上,如果您的TextBox之外的控件不是重点,我们必须将变量TextBoxes重置为null:

lastFocused