2011-12-02 40 views
0

我有一个水印keydown的问题。我有一个像这样的keydown事件处理程序。KeyDown上的Watermark难题

if (e.Key == Key.Tab) 
     { 
      FocusManager.GetFocusedElement(); 

      if (FocusManager.GetFocusedElement() == txtPassword) 
       btnLogin.Focus(); 
      else if (FocusManager.GetFocusedElement() == txtUserName) 
       txtPassword.Focus(); 
      else 
       txtUserName.Focus(); 
     } 

它工作正常,但是当焦点在btnLogin,当你按Tab键,焦点就直接到密码框。我插入了断点无济于事。它只传递一次代码,并且它进入else语句。有任何想法吗?感谢所有回复。

+0

是否有任何特定的原因,您没有使用内置选项卡功能? –

+0

@competent_tech是的。这是因为我们在MAC上运行此应用时遇到了一些技术问题。 Mac上的问题是,当我从txtUserName中选择标签时,标签会转到浏览器的地址栏。这就是为什么我试图对这个进行硬编码。 – Nathan

+0

哎。我假设你检查了控件上的tabindexes,以确保它们按照正确的顺序排列,以防Mac实现只是选择这些控件? –

回答

1

不确定Watermark是什么,但通常这是由于您拦截Tab并执行某些操作而导致的,然后事件冒泡并由默认处理程序再次处理。

尝试消耗事件,以免发生这种情况。可能是类似e.preventDefault()或e.stopPropagation()

+0

这给了我一个主意。我在标签上添加了e.Handled = true,并且几乎像其他任何网站一样运行。谢谢。 – Nathan