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

WinForm中TextBox的几个基本技巧

1一些常用属性this.textBox5.PasswordChar;密码的样式this.textBox5.UseSystemPasswordChartrue;如果这个属性为tru

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",以便让你设定某个控件的工具提示信息。


转载于:https://www.cnblogs.com/ShengHai/archive/2012/05/29/TextBox%e5%9f%ba%e6%9c%ac%e6%8a%80%e5%b7%a7.html


推荐阅读
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
author-avatar
骚动的疯子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有