我遇到了一个我不理解的情况,并希望有人在可能的情况下启发我。
创建了一个WPF应用程序。为简单起见,请将此应用程序视为一个窗口。我在这个窗口上放了一些控件,其中有一个TextBox控件(我们称之为TB)。
要求此TB必须始终具有焦点(如果有人通过条形码扫描器读取某些东西或类似物,它应该出现在那里)。
我想在计时器的帮助下实现这一点:每一秒焦点都转移到TB。
直到现在一切正常(正如预期的那样)。
奇怪的是以下内容:让我们说一个新用户想要使用这个窗口,所以她必须登录。我想用一个新的Window对象实现它(让我们称之为W2),这样调用它: / p>
W2.ShowDialog();
这个W2窗口应该是模态的(请记住计时器仍然执行)。
疯狂的是,在 Windows Vista 下,它按预期工作完美(这意味着W2是模态的,用户可以在W2上做什么),<一旦用户想要在W2的文本框中键入内容,Windows XP上的强>>但,焦点在初始窗口上设置回TB(据我所知,这意味着W2 不是模态!!!?我是对的吗?)。
我怎样才能克服这种情况?
这是正确的方法吗?
提前致谢
答案 0 :(得分:4)
答案 1 :(得分:1)
我不确定这个设置 - 焦点 - 每几秒钟都是一个好主意。一些输入总是可能出现在丢失和聚焦状态之间的间隔(并且丢失)。替代解决方案是在TB所在的表单上捕获PreviewKeydown事件,并以某种方式将条形扫描器的输出设置为TB。