【问题标题】:Textbox and messagebox文本框和消息框
【发布时间】:2012-05-01 16:44:20
【问题描述】:

我的表单上有 2 个输入框。如果用户输入数据,他可以按回车键查看它们是否正确,否则会出现错误消息框。现在我有一个小问题。当 messagebox 出现并且用户按下回车键时,msgbox 消失并立即出现另一个。我想消失,让用户更改他们的数据。我该如何解决? 我试图以这种方式解决这个问题:我添加了不可见的文本框,当用户按下 Enter 时,此文本框获得焦点,如果出现错误 msgbox,最终发件人获得焦点。 代码:

private void login(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        focus.Focus();
        if (password.Password == "" || account.Text == "")
        {
            MessageBoxResult result = MessageBox.Show("Fill login and password.");
        }
        if(sender.GetType() == account.GetType())
          ((TextBox)sender).Focus();
        else
          ((PasswordBox)sender).Focus();
    }
}

【问题讨论】:

  • 为什么不使用 WPF 验证(IDataErrorInfo 等)?

标签: c# wpf textbox focus messagebox


【解决方案1】:

尝试设置 e.Handled = true; 以防止按键传播到您的文本框。

【讨论】:

  • 我尝试在登录方法的顶部将其粘贴,在我知道按下回车后,出现 msgbox 后。我有什么问题吗?
【解决方案2】:

试试这个:

if (e.Key == Key.Enter && !string.IsNullOrWhiteSpace(txtPass.Text))
        {
            if (1 + 1 != 3)
            {
                MessageBox.Show("Wrong!!!");
                txtPass.Clear();
                txtPass.Focus();
            }
        }

【讨论】:

  • 它有效,但我需要不清除输入框的方法。也许我会添加带有错误的红色标签而不是消息框,但这不是好方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
  • 2011-04-26
  • 2011-12-22
相关资源
最近更新 更多