如何将焦点重置为Windows应用程序中最后输入的文本框

时间:2013-12-02 04:38:01

标签: c#

我在表单中有两个TextBox es和一个按钮控件。单击该按钮时,最后输入的TextBox的名称应显示在MessageBox中。同时我需要将焦点重置为上次输入的TextBox

string str=string.Empty;
bool foc;

在按钮单击中,我编写了以下代码

    if (MessageBox.Show("You want to reset or continue", "control", 
           MessageBoxButtons.OKCancel) == DialogResult.Cancel)
    {
        if (foc== true)
        {
            textBox1.Focus();
        }
        else
        {
            textBox2.Focus();
        }
    }

当我点击取消按钮时,焦点应该是最后输入的文本框

    private void textBox1_Enter(object sender, EventArgs e)
    {
        str = textBox1.Name;
        foc= textBox1.Focus();
    }

    private void textBox2_Enter(object sender, EventArgs e)
    {
        str= textBox2.Name;
        foc= false;
    }

除了上面的代码行之外,还有其他任何可能的重点放在文本框中,但是当文本框的数量增加时我需要编写条件。 如果我在表单中有文本框,组合框,列表框,复选框或任何其他控件,那么如何找到用户最后输入的控件,并通过使用任何函数而不是在每个控件中写入Enter事件来设置焦点到该控件

2 个答案:

答案 0 :(得分:1)

您可以处理Leave的{​​{1}}事件来存储最后TextBoxes控件。

试试这个:

TextBox

答案 1 :(得分:0)

 public bool textBox1WasLastFocused = false, textBox2WasLastFocused = false; // Global Declaration
 void textBox2_GotFocus(object sender, EventArgs e)
 {
    textBox2WasLastFocused = true;
    textBox1WasLastFocused = false;
 }

 void textBox1_GotFocus(object sender, EventArgs e)
 {
     textBox1WasLastFocused = true;
     textBox2WasLastFocused = false;
 }

 private void button1_Click(object sender, EventArgs e)
 {
     if (textBox1WasLastFocused)
        MessageBox.Show("textbox1 was ladst focused !");
     else if(textBox2WasLastFocused)
        MessageBox.Show("textbox2 was ladst focused !");
 }