c# - 跟踪最后两个焦点文本框
问题描述
我有一定数量的文本框,我需要跟踪最后两个集中的文本框。这是我尝试的方法。
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 相同,因为通过单击该按钮获得了另一个控件的焦点。
解决方案
您可以使用单个处理程序并在处理程序中处理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;
}
在上面的示例中,我们将数组向左移动,然后将发送者分配给最后一个元素。这样,数组始终包含TextBox
您的最后 n 个焦点控件。
推荐阅读
- javascript - 如何将匿名帐户转换为永久帐户
- elasticsearch - Hibernate Search 查询从实际数据库而不是从弹性数据库索引中获取数据
- c - 谁能解释一下“if”语句是如何在这里执行的
- swift - 在 Swift 中使用 firstIndex(of: Character) 时是否总是需要 Nil-Coalescing?
- c++ - CreateFile() 方法返回 ERROR_NOACCESS 错误
- python - 具有重复输入的神经网络 - Keras
- java - 如何在运行时使用字节伙伴有效地将接口与 POJO 关联?
- openthread - 我如何为线程领导角色构建 openthread 堆栈?
- r - 在ggplot中的意大利面条图中添加平均值和标准差
- node.js - 如何通过 req.params.id 检索解析服务器的 objectId