【问题标题】:dynamic textbox validation in C#C#中的动态文本框验证
【发布时间】:2011-05-08 10:59:23
【问题描述】:

我的文本框只接受数字值,从 0 到 255(1 个字节),我怎样才能防止用户输入数字>255...输入第三个数字的那一刻应该验证。现在我的代码验证当您从文本框出来并显示消息时。非常感谢您的帮助。

  private void cor_o_gain_Validating(object sender, CancelEventArgs e)
    {
        try
        {
            int entered = int.Parse(cor_o_gain.Text);
            if (entered > 255)
            {
                e.Cancel = true;
                MessageBox.Show("Enter the number between 0 and 255");
            }
        }
        catch (FormatException)
        {
          //  e.Cancel = true;
        }
    } 

【问题讨论】:

    标签: c# .net validation textbox


    【解决方案1】:

    您可能会考虑这样做,因为这很烦人。如果用户键入“30”并在光标位于 3 之前改变主意,他可能会键入“40”然后按两次删除。你的应用程序会向他发出哔哔声并显示一个消息框。

    如果您必须在他打字时进行验证,请考虑在他的文本旁边放置一个标签并将其更新为“无效输入”或类似内容。如其他地方所述,在 keypress、keyup 或 keydown 上执行此操作。

    【讨论】:

    • 烦人的很容易被Ctrl+V打败。
    • 哦...好的,如果输入的数字>255,如何在显示消息后恢复文本框中的先前值??
    【解决方案2】:

    查看关键事件; keypress、keydown、keyup 等。

    【讨论】:

    • 您还可以考虑“预览”类型的事件:PreviewKeyDown 等。
    【解决方案3】:

    您应该改用 numericUpDown 控件,并将最小值和最大值设置在 0 和 255 之间。

    System.Windows.Forms.NumericUpDown n = new System.Windows.Forms.NumericUpDown(); n.Minimum = 0; n.Maximum = 255;

    【讨论】:

      【解决方案4】:

      我会说重新考虑您的实施。我用过这样设计的软件,这很烦人。随着时间的推移,它可能会激怒您的用户,并且不会带来任何实际好处。

      如果您绝对必须在用户输入过程中阻止用户(再次质疑您是否应该这样做),那么您需要像 Keypress 这样的“快速响应”事件。

      虽然有很多“更温和”的实现。一种选择(不是唯一的选择)是更改文本框的背景颜色并显示错误消息以提醒但不会阻止用户输入无效。这允许用户在尝试更改文本时更改文本而不会被(被消息框)打断。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-10
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 2011-09-18
        • 1970-01-01
        • 2017-06-01
        相关资源
        最近更新 更多