【问题标题】:TextBox Events in C#C# 中的文本框事件
【发布时间】:2013-02-26 12:45:41
【问题描述】:

我有一个文本框。离开文本框后,第一个字符应该是大写字母。 三个事件的工作方式相同。它们是 Leave、Validating 和 Validated。

if (txtLocl.Text.Length > 0)
    txtLocl.Text = txtLocl.Text.Substring(0, 1).ToUpper() + txtLocl.Text.Substring(1); 

我应该使用这 3 个事件中的哪个事件?

【问题讨论】:

  • 更好地使用用户控制............
  • 阅读这个:MSDN,它可能会回答你的问题。

标签: c# winforms events textbox validating


【解决方案1】:

textBox1_Leave 适合你。

在此处查看有关文本框的事件和描述>>

http://msdn.microsoft.com/en-us/library/system.windows.forms.textbox_events.aspx

希望对您有所帮助。

【讨论】:

  • 我想知道它们之间有什么区别...,
  • @sreeaneev 据我所知,区别仅在于调用事件的顺序。
  • Leave 事件触发 w/e 控制失去输入焦点。 Validating 和 Validated 仅在验证发生时触发(有多种方法可以禁止/禁用控件验证)。
  • 感谢@Nik 提供更多重要信息。
【解决方案2】:

您可能想要订阅 LostKeyboardFocus 事件(在 WPF 中)或 Leave 事件(在 WF 中)。

【讨论】:

  • 那是哪个 jQuery 版本的?
  • 对不起?这不是一个.Net相关的问题吗?哦
【解决方案3】:

我建议使用 Leave,因为我假设您不是在验证该值,而是对其进行格式化。 Validating 和 Validated 应分别包含验证代码和验证的后果,IMO。

【讨论】:

    【解决方案4】:

    您可以订阅Control.Leave 事件,该事件将在控件失去焦点时触发。最初,我认为使用Control.LostFocus 是最合适的事件,但设计器无法使用它,这意味着您需要手动订阅该事件,这在我看来有点丑陋和非传统。

    private void inputTextBox_Leave(object sender, EventArgs e)
    {
        if (inputTextBox.Text != string.Empty)
        {
            string input = inputTextBox.Text;
            inputTextBox.Text = input.First().ToString(CultureInfo.InvariantCulture).ToUpper() +
                                string.Join(string.Empty, input.Skip(1));
        }
    }
    

    您听起来好像对Control.Validating 感兴趣。使用Control.Validating 的优点是您可以利用事件处理程序的给定参数; CancelEventArgs 并将 Cancel 属性设置为 true。这将阻止控件失去焦点并强制用户输入 有效 值。我认为这不适合您的应用程序,因为除了格式化输入之外,您并没有真正验证任何内容。

    private void inputTextBox_Validating(object sender, CancelEventArgs e)
    {
        if (inputTextBox.Text == string.Empty)
        {
            statusLabel.Text = "The given input is not valid.";
            e.Cancel = true;
        }
    }
    

    请记住,当表单关闭时,所有控件随后都会失去焦点,并且会触发 Control.Validating 事件,这可能会阻止表单关闭,直到所有字段都通过其相关验证检查。如果您发现自己需要避免这种行为,快速搜索将占上风。

    【讨论】:

      【解决方案5】:

      还有许多其他活动可供选择。

      正如MSDN 所说,当您通过使用键盘(TAB、SHIFT+TAB 等)、调用 Select 或 SelectNextControl 方法或将 ContainerControl.ActiveControl 属性设置为当前窗体中,焦点事件按以下顺序发生:

      1) Enter
      
      2) GotFocus
      
      3) Leave
      
      4) Validating
      
      5) Validated
      
      6) LostFocus
      

      当您使用鼠标或调用 Focus 方法更改焦点时,焦点事件按以下顺序发生:

      1) Enter
      
      2) GotFocus
      
      3) LostFocus
      
      4) Leave
      
      5) Validating
      
      6) Validated
      

      如果 CausesValidation 属性设置为 false,则 Validating 和 Validated 事件将被抑制。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-22
        • 2022-07-19
        • 1970-01-01
        • 2016-02-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多