【问题标题】:Keyboard closes when i set focus to a component programatically当我以编程方式将焦点设置到组件时键盘关闭
【发布时间】:2014-02-24 04:17:05
【问题描述】:

我必须在页面中输入用户名和密码字段。在用户名 TextBox 上单击输入时,我想将焦点移至 PasswordBox,焦点正确出现,但键盘已关闭。如何保持键盘打开?

if (p.OriginalSource is PasswordBox)
{
        loginCommand.Execute(null);
}
else if (p.OriginalSource is TextBox) //assuming there is no third box that can handle
{
     var element = (p.OriginalSource as TextBox).FindName("passwordbox");
     var ss = ((WatermarkPasswordBox)element).Focus();
     ((WatermarkPasswordBox)element).UpdateLayout();
     //((WatermarkPasswordBox)element).Password = "";
}

【问题讨论】:

  • 这个问题你解决了吗?
  • @MinaSamy 是的,我以某种方式解决了它。它在视图模型中对我不起作用,但是当我尝试通过后面的代码时起作用。
  • 没问题,能分享一下解决方法吗?
  • @MinaSamy 请看我刚刚添加的答案。

标签: c# windows-phone-7


【解决方案1】:

为您的用户名文本框创建 KeyDown 事件并在事件中编写代码,如下所示

if (e.Key == System.Windows.Input.Key.Enter)
        {
            PasswordBox.Focus();
        }

这对我有帮助

【讨论】:

  • 不起作用。我已经在 keyUp 中有这个(也尝试过 keydown)
【解决方案2】:

即使经过太多努力,从视图模型中它也对我不起作用。所以我从代码隐藏中尝试了这个,它成功了。

对于一种登录屏幕,我处理了用户名字段 (TextBox) 的 keydown 事件,并在 enter-keydown 事件上将焦点设置为密码字段 (PasswordBox):

private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key.Equals(Key.Enter))
    {
        PasswordBox.Focus();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 2011-12-16
    • 2021-10-30
    • 1970-01-01
    • 2011-03-15
    相关资源
    最近更新 更多