我有一定数量的文本框,我需要跟踪最后两个重点突出的文本框。这是我尝试的方法。
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相同,因为另一个控件是通过单击该按钮来聚焦的。
答案 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)
为简化起见,我建议做一些类似的事情,例如,在使文本框获得焦点时,将其名称放入数组中,然后列出创建的数组中添加的最后两个名称。