代码之家  ›  专栏  ›  技术社区  ›  Buddy Lindsey

在Silverlight的文本框中按Enter

  •  10
  • Buddy Lindsey  · 技术社区  · 16 年前

    我正在开发一个Silverlight应用程序,您需要在文本框中输入信息,然后点击Enter。我找不到onclick事件,所以我使用onkeypressup事件,检查是不是按了Enter键,如果按了“blah”。

    感觉好像有更好的方法。问题是,有吗?

    5 回复  |  直到 12 年前
        1
  •  12
  •   ptio    16 年前

    我想这就是抓住钥匙的方法。进入。

    另外,如果您使用keydown事件而不是keydup事件,那么您的代码将更易于阅读。

    如果您只关心获取键。输入一个控件,那么您的方法是正确的。

    您还可以捕获键。通过使用一组相关控件的容器的keydown事件(“事件冒泡”),输入该键。

        2
  •  6
  •   Shawn Wildermuth    16 年前

    你真的想把它放在文本框里吗?我会在容器(例如网格、画布)上放置onkeyup处理程序,以便在窗体的任何位置按下按钮。

        3
  •  5
  •   Dublx    13 年前

    如果使用“希望绑定命令”属性而不是使用“单击”事件,则此操作将起作用。首先创建一个用于单击的事件处理程序(见下文),然后在keyup do中执行以下操作:

        private void MyTextBox_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter) SomeButton_Click(this, null);
    
        }
    
        private void SomeButton_Click(object sender, RoutedEventArgs e)
        {
            ICommand cmd = SomeButton.Command;
            if (cmd.CanExecute(null))
            {
                cmd.Execute(null);
            }
        }
    
        4
  •  1
  •   slfan Nematillo Ochilov    12 年前

    我在使用命令模式时使用以下实现:

    private void MyTextBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
            BindingExpression b = MyTextBox.GetBindingExpression(TextBox.TextProperty); 
            if (b != null)
                b.UpdateSource();
    
            ICommand cmd = SomeButton.Command;
            if (cmd.CanExecute(null))
                cmd.Execute(null);
        }
    }
    

    按Enter键时,文本框的数据源不会更新,命令使用旧值。因此,在执行命令之前必须调用updatesource。

    当然,您可以捕获比文本框更高级别的事件。

        5
  •  0
  •   vmachacek    13 年前

    嗯,我是Silverlight的新成员,我为具有一个DependencyProperty按钮的按钮创建了HienterBeahaviour。

    我手动设置连线按钮和行为(在代码后面),然后当按下回车键时,我输入按钮上的命令。