热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

IP地址的字段验证-FieldValidationForAnIPAddress

Iamtryingtopreventauserfromenteringanythingintoaparticulartextboxasidefromanumbero

I am trying to prevent a user from entering anything into a particular textbox aside from a number or a period in C#. The textbox is supposed to contain an IP address. I have it working such that non-numeric entries are prevented, however I can't seem to get it to allow a period to be entered. How might I accomplish this?

我试图阻止用户在C#中的数字或句点之外输入特定文本框中的任何内容。文本框应包含IP地址。我有它的工作,以防止非数字条目,但我似乎无法让它允许输入一个句号。我怎么能做到这一点?

    private void TargetIP_KeyDown(object sender, KeyEventArgs e)
    {
        // Initialize the flag to false.
        nOnNumberEntered= false;

        // Determine whether the keystroke is a number from the top of the keyboard.
        if (e.KeyCode  Keys.D9)
        {
            // Determine whether the keystroke is a number from the keypad.
            if (e.KeyCode  Keys.NumPad9)
            {
                // Determine whether the keystroke is a backspace.
                if (e.KeyCode != Keys.Back)
                {
                    nOnNumberEntered= true;
                    errorProvider1.SetError(TargetIP, FieldValidationNumbersOnly);
                    // A non-numerical keystroke was pressed.
                    // Set the flag to true and evaluate in KeyPress event.
                }
            }
        }

        //If shift key was pressed, it's not a number.
        if (Control.ModifierKeys == Keys.Shift)
        {
            nOnNumberEntered= true;
        }
    }


    private void TargetIP_KeyPress(object sender, KeyPressEventArgs e)
    {
        // Check for the flag being set in the KeyDown event.
        if (nOnNumberEntered== true)
        {
            // Stop the character from being entered into the control since it is non-numerical.
            e.Handled = true;
        } 

        else
        {
            errorProvider1.Clear();
        }
    }

1 个解决方案

#1


You should use a MaskedTextBox control instead of a normal TextBox control. Then just set the Mask property to 990\.990\.990\.990 and you are done.

您应该使用MaskedTextBox控件而不是普通的TextBox控件。然后将Mask属性设置为990 \ .990 \ .990 \ .990即可完成。

  • 9 optional digit or space
  • 9个可选的数字或空格

  • 0 required digit
  • 0所需数字

  • \. escaped dot
  • \。逃脱点

UPDATE

While I suggested using MaskedTextBox, I never (at leat I cannot remeber) used it myself. Now I just tried it ... well, forget what I said. I thought it might be a simple solution, but it is an unusable solution, too.

虽然我建议使用MaskedTextBox,但我从不(因为我不能记得)自己使用它。现在我只是尝试了......好吧,忘了我说的话。我认为这可能是一个简单的解决方案,但它也是一个无法使用的解决方案。

New, more complex, but far better suggestion and the way I usually do it.

新的,更复杂的,但更好的建议和我通常做的方式。

  • Create a custom control with four text boxes, three labels with a dot each between them.

    创建一个带有四个文本框的自定义控件,三个标签之间各有一个点。

  • Analyse the input.

    分析输入。

    • Just pass control keys to the control.
    • 只需将控制键传递给控件即可。

    • Move the focus if the user enters a dot, a tab (will be handled by the control), a space, may be a fourth digit.
    • 如果用户输入一个点,一个标签(将由控件处理),一个空格,可能是第四个数字,移动焦点。

    • Discard everything that is not a digit.
    • 丢弃所有不是数字的东西。

    • Discard the digit if the number falls out of the range from 0 to 255.
    • 如果数字超出0到255的范围,则丢弃该数字。

    • Change the text to 0 if the user deletes the last digit.
    • 如果用户删除最后一个数字,请将文本更改为0。

    • Remove a leading zero if the user enters a non-zero digit.
    • 如果用户输入非零数字,则删除前导零。

  • Add a property to the user control that returns the entered address.

    将属性添加到用户控件,返回输入的地址。

  • May be make the proeprty writable and add event handling.

    可以使proeprty写入并添加事件处理。


推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 标题: ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
author-avatar
yuanyuan
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有