1  一些常用属性
this.textBox5.PasswordChar = '@';  //密码的样式
            this.textBox5.UseSystemPasswordChar = true; //如果这个属性为true,则密码就和系统默认的密码样式相同,而PasswordChar属性不起作用.
            this.textBox5.Multiline = true;   //多行显示
            this.textBox5.WordWrap = true;  //自动换行
            this.textBox5.ScrollBars = ScrollBars.Vertical; //显示垂直滚动条。ScrollBars的枚举值之一。
            this.textBox5.MaxLength = 100;//在文本框中输入的最大字符数。

2  实现自动完成功能,提高用户体验

想实现自动完成,就必须明白三个属性:

AutoCompleteSource属性: 设置自动完成的来源。此属性的值为AutoCompleteSource枚举值之一

AutoCompleteMode属性:设置自动完成的显示模式。此属性的值为AutoCompleteMode枚举值之一

AutoCompleteCustomSource属性:自定义完成来源。当AutoCompleteSource属性值为CustomSource时,此

属性才起做用。属性值为AutoCompleteStringCollection集合对象,可以通过AutoCompleteCustomSource属性

这个集合。

可以通过直接属性值来实现自动完成,也可以用代码实现,用代码如下:

AutoCompleteStringCollection myCutomSource = new AutoCompleteStringCollection();
            myCutomSource.AddRange(new string[]{"成都市东门","成都市北门","成都市西门","成都市南门"});
            this.textBox5.AutoCompleteSource = AutoCompleteSource.CustomSource;
            this.textBox5.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            this.textBox5.AutoCompleteCustomSource = myCutomSource;

3  TextBox控件中的字符在输入同时立即转换为大写或小写

方法一:通过CharacterCasing属性来实现。此属性默认的值为Normal,意思是字符的大小写不会改变。还有2个属性值:Upper和Lower。

方法二:通过TextBox的KeyPress事件实现

private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (char.IsLower(e.KeyChar))
            {
                textBox3.SelectedText = char.ToUpper(e.KeyChar).ToString();
                e.Handled = true;
            }
        }

4  验证用户输入,增加用户体验

基本的思路是:首先,使用控件的Validating事件来验证用户的输入。其次,当输入值不符合要求时,用ErrorProvider控件通知用户或者 用MessageBox以弹出对话框的形式通知用户。显然用RrrorProvider控件通知用户更具用户体验性。

注意:只有当控件的 CauseValidation属性被设置为True(此为默认值)时,才会引发Validating事件。同时必须知道Validating事件会在控 件失去焦点之前引发。Validating事件会提供 CancelEventArgs参数,可以让你通过设置其Cancel属性来告知该控件中的数据是 否有效,如果你把Cancel属性设置为True(表示控件中的数据无效),则焦点会保持在数据无效的控件上;如果你把Cancel属性保持默认值 False(表示控件中的数据有效),则接下来会引发Validated事件,而且焦点也会转移到新的控件上去。

注意:焦点所前往的控件的CauseValidation属性的设置值也会决定焦点原先所在控件的Validating事件是否要被引发。如果焦点所前往的控件的CauseValidation属性的值为False,则焦点原先所在控件的Validating事件

"#ff0000">不会被引发,如果焦点所前往的控件的CauseValidation属性的值为True,则焦点原先所在控件的Validating事件会被引发。这样的好处是增加了灵活性而且也不会遗漏任何验证操作。此外只要窗体中任何一个控件的输入值无法通过Validating事件的验证条件,则窗体将无法关闭。

一个例子:

//必须要从工具箱组件中把ErrorProvider控件拖到窗体上,不管眼验证多少控件,只需要一个ErrorProvider控件就OK了
private void txtUserName_Validating(object sender, CancelEventArgs e)
        {
            if (this.txtUserName.Text == string.Empty)
            {
                errorProvider1.SetError(txtUserName, "姓名不能为空!");
                e.Cancel = true;
            }
            else
            {
                errorProvider1.SetError(txtUserName, "");
            }

另一个例子:

private void txtPhone_Validating(object sender, CancelEventArgs e)
        {
            Regex re = new Regex(@"^(d{3})d{4}d{4}$");
            if (!re.IsMatch(txtPhone.Text))
            {
                errorProvider1.SetError(txtPhone, "电话号码必须符合(xxx) xxxx xxx 的格式。");
                e.Cancel = true;//当输入的值不符合要求时候,将不允许移出该控件
            }
            else
            {
                errorProvider1.SetError(txtPhone, "");
            }
        }

最 后注意一点:ErrorProvider这种控件很像是一种“扩展性提供者”。为什么这样说呢?当你把一个ErrorProvider控件拖到窗体上时, 你会发现,原来窗体上的控件多出了三个属性:errorProvider1 上的 Error、errorProvider1 上的 IconAlignment、errorProvider1 上的 IconPadding。像ErrorProvider这样的控件还有ToolTip控件等,一旦你将一个ToolTip控件加入窗体后,窗体上的所有控 件就会多出一个"toolTip1 上的ToolTip",以便让你设定某个控件的工具提示信息。

Winform中的TextBox的小技巧的更多相关文章

  1. C#的winform中控制TextBox中只能输入数字

    C#的winform中控制TextBox中只能输入数字 private void textBox3_KeyPress(object sender, System.Windows.Forms.KeyPr ...

  2. [转]Golang 中使用 JSON 的小技巧

    taowen是json-iterator的作者. 序列化和反序列化需要处理JSON和struct的关系,其中会用到一些技巧. 原文 Golang 中使用 JSON 的小技巧是他的经验之谈,介绍了一些s ...

  3. IDEA Intellij中vim插件使用小技巧

    在 IDEA Intellij小技巧和插件 一文中简单介绍了一下IdeaVim插件.在这里详细总结一下这个插件在日常编程中的一些常用小技巧.供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考.当然 ...

  4. EF Core 1.0中使用Include的小技巧

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:由于EF Core暂时不支持Lazy Loading,所以利用Include来加载额外 ...

  5. .NET中Main函数使用小技巧

    摘要:任何语言开发出来的程序,都会有一个程序入口函数,可能每个语言所使用的程序入口函数名称不一样,但是它们的作用都是一样的,都是被操作系统去调用.那么本文主要总结.NET中的程序入口函数Main使用的 ...

  6. WinForm中当TextBox重新获得焦点时输入法失效问题

    在winform 中,每当TextBox获得焦点时,部分输入法会失效(如智能ABC.五笔98.极品五笔等),需要重新切换输入法才能正常使用. 此时要将Form的ImeMode属性改为:OnHalf(或 ...

  7. iOS 开发中使用到的小技巧汇总

    国庆即将来到,一个小项目也即将完成,把自己在项目中用的一些小技巧写出来,方便查找. 1,去掉分割线--动画设置透明度alpha //去掉tableView的分隔线:     self.tableVie ...

  8. [转]CMD命令提示符窗口中的快捷键、小技巧和常用命令

    转至:https://wenku.baidu.com/view/d5d2b7ca360cba1aa811dac6.html 快捷键:  F1:按F1一次,命令提示符向后切换到已经执行过的命令字符.如果 ...

  9. Fiddler使用过程中容易忽略的小技巧

    fiddler的基本使用,在之前的一篇博文中有详细介绍,可参见Fiddler抓包工具使用详解,今天来分享几个容易忽略的小技巧. 1.ios机装了证书,依然抓不到包 近期总被同事问及ios机装了证书,但 ...

随机推荐

  1. nginx: [error] CreateFile() "E:\nginx\nginx-1.9.3/logs/nginx.pid" failed

    nginx: [error] CreateFile() "E:\nginx\nginx-1.9.3/logs/nginx.pid" failed nginx: [error] Op ...

  2. 虚拟环境jupyter notebook使用【virtualenv环境】

    一.进入虚拟环境 source tf1/bin/activate 二.安装 IPykernel python2版本: pip install ipykernel python3版本: pip3 ins ...

  3. servlet增删改查

    Servlet 使用Servlet进行增删改查 步骤 1.  导入以下几个jar包到WEB-INF下的lib包里,必要时build path,其中jstl.jar和standard.jar是使用jst ...

  4. Python 19 Django 详解

    本节概要 Django详解 前言 有一部分原因是,确实djando的课程有点多:并且,最近又在研究利用python做数据分析时间上耽误了.所以楼主讲所有的课程全部重新观看了一遍,再来撰写博客,其实说起 ...

  5. 【blog】好用的markdown插件 - Mditor

    效果 官网地址 GitHub: https://github.com/houfeng/mditor 主页: http://houfeng.net/mditor/

  6. printf是在libc库中么?

    libc中果然有很多的函数,使用nm看了一下,里面竟然还有reboot函数,汗! 使用grep,可以看到各种 printf 也都在这里头. objdump是看函数的地址与函数名对应的,虽然也能证明pr ...

  7. 连接 sqlserver

    提示错误:Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 ...

  8. 20165325 2017-2018-2 《Java程序设计》结对编程_第一周:四则运算

    一.码云链接 项目名称FAO 码云链接 二.需求分析 实现一个命令行程序: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确 ...

  9. Spring @Bean注解 (基于java的容器注解)

    基于java的容器注解,意思就是使用Java代码以及一些注解,就可以取代spring 的 xml配置文件. 1-@Configuration & @Bean的配合 @Configuration ...

  10. CAN总线芯片SN65HVD230QD介绍

    CAN总线硬件电路如上,采用芯片为SN65HVD230QD,从TI获得的芯片手册,可知该芯片参数为: 3.3V供电 低电流为370uA典型值