【问题标题】:WPF: Textbox not firing onTextInput eventWPF:文本框未触发 onTextInput 事件
【发布时间】:2010-11-25 08:57:09
【问题描述】:

所以基本上,我有一堆文本框供用户填写。我有一个按钮,我想保持禁用状态,直到所有文本框都输入了文本。这是我正在使用的示例 XAML 文本框:

<TextBox Name="DelayedRecallScore" TextInput="CheckTextBoxFilled" Width="24" />

这是我试图触发的功能:

  //Disables the OK button until all score textboxes have content
    private void CheckTextBoxFilled(object sender, RoutedEventArgs e)
    {
        /*
        foreach (TextBox scorebox in TextBoxList)
        {
            if (string.IsNullOrEmpty(scorebox.Text))
            {
                Ok_Button.IsEnabled = false;
                return;
            }
        }
        Ok_Button.IsEnabled = true;
         */
        MessageBox.Show("THIS MAKES NO SENSE");
    }

当应该触发 TextInput 时,MessageBox 未显示。作为一个实验,我尝试在 PreviewTextInput 上触发 CheckTextBoxFilled(),然后它运行良好,这意味着无论出于何种原因,该函数都没有被调用。我还有一个由 PreviewTextInput 触发的验证功能,它可以正常工作。起初我认为 PreviewTextInput 可能会以某种方式干扰 TextInput,所以我将 PreviewTextInput 从 TextBox 中移除,但这并没有解决任何问题。我完全被为什么会发生这种情况弄糊涂了,所以任何帮助都将不胜感激。

【问题讨论】:

  • 多播代表怎么了?除了自己的事件之外,它为什么不触发用户分配的事件?

标签: wpf events textbox textinput


【解决方案1】:

TextInput 事件的处理程序不会被触发,因为 TextBox 正在处理该事件。您可以尝试改用TextChanged 事件,因为实际上您只想知道何时在TextBox 中添加或删除字符。

【讨论】:

  • 我不知道,谢谢。我只是想,既然 PreviewTextInput 以这种方式工作,没有什么可以阻止 TextInput 以同样的方式工作。 TextChanged 工作得很好。
  • WPF 确实喜欢让原本应该简单的任务变得过于困难。我的意思是,如果一个事件永远不会触发,为什么还要公开它?荒谬...是的,我在发泄:D
  • @Ed FWIW,如果您将 TextBox 子类化,那么您可以处理该事件。不过我确实明白你的意思。
  • 是的,总有一种解决方法,我通常喜欢 WPF,我刚刚被这个最近项目的框架变得过于困难的简单事情咬了很多次,我得到了一个有点苦。
【解决方案2】:
InitializeComponent();
textbox.AddHandler(TextBox.TextInputEvent, 
                   new TextCompositionEventHandler(TextBox_TextInput_1), 
                   true);

【讨论】:

  • 这不会捕获空格。事件未触发。
【解决方案3】:

改用“PreviewTextInput”,它会起作用。

【讨论】:

    【解决方案4】:

    创建一个从 TextBox 派生的新类。在新类中重写 OnTextInput 方法。您的 OnTextInput 方法将在 TextBox 获取之前被调用。

    【讨论】:

      猜你喜欢
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      相关资源
      最近更新 更多