跟踪最后两个焦点文本框

时间:2018-07-28 21:04:12

标签: c# winforms

我有一定数量的文本框,我需要跟踪最后两个重点突出的文本框。这是我尝试的方法。

private Control _focusedControl;
private Control _lastfocusedControl;

private void PCp1txt_LostFocus(object sender, System.EventArgs e)
{
    _lastEnteredControl = (Control)sender;
}
private void PCp1txt_LostFocus(object sender, System.EventArgs e)
{
    _lastEnteredControl = (Control)sender;
}

private void PCp2txt_GotFocus(object sender, EventArgs e)
{
    _focusedControl = (Control)sender;
}

private void PCp2txt_GotFocus(object sender, EventArgs e)
{
    _focusedControl = (Control)sender;
}

这不起作用,因为当我按下按钮时,_lastfocusedControl的内容与_focusedControl相同,因为另一个控件是通过单击该按钮来聚焦的。

2 个答案:

答案 0 :(得分:1)

您可以使用单个处理程序并在处理程序中处理所有这些Enter控件的TextBox事件,并跟踪最后n集中的TextBox控件:

const int n = 2;
TextBox[] textBoxes = new TextBox[n];
private void textBox_Enter(object sender, EventArgs e)
{
    var destination = new TextBox[n];
    Array.Copy(textBoxes, 1, destination, 0, textBoxes.Length - 1);
    textBoxes = destination;
    textBoxes[textBoxes.Length - 1] = (TextBox)sender;
}

在上面的示例中,我们将数组向左移动,然后将发送方分配给最后一个元素。这样,数组始终为您包含最后n个集中的TextBox控件。

答案 1 :(得分:0)

为简化起见,我建议做一些类似的事情,例如,在使文本框获得焦点时,将其名称放入数组中,然后列出创建的数组中添加的最后两个名称。