有没有一种简单的方法可以找出以前关注的小部件是什么?
假设我有两个(或更多)TextView(A和B)和一个ComboBoxEntry。对ComboBoxEntry的任何更改都会根据聚焦的窗口小部件(A或B)修改A或B中的当前选择。问题是ComboBoxEntry抓住焦点,所以我无法判断是否必须将更改应用于A或B.
如果我知道最后关注的对象,它可以工作。
现在我很难想象为我的应用程序中的每个小部件添加焦点处理程序,以便能够在ComboBoxEntry获得焦点之前检测哪一个是最后一个焦点。
有人可以帮忙吗?
感谢。
答案 0 :(得分:0)
最后我确实跟踪了我的主窗口中的焦点变化,但事实证明这很简单:
在顶级窗口中,覆盖OnSetFocus:
protected override void OnSetFocus(Widget focus)
{
// Queue focus in a two entries queue (a simple array will do)
// So this queue will always contain : Current Widget, last Widget.
}
现在,当我的带有条目的组合框触发OnChange时,它会向两个TextViews生成一个事件,后者又会读取我的队列,并确定哪一个是聚焦元素,然后它们就失去了Combobox的焦点。