Winform关于⽂本框(textbox)清空和限制输⼊【灰⾊显⽰】⽬录
前⾔
最近⼀直在优化TextBox,这个控件⽤的很普遍,⽤法也特别的多,最近⽤的最多的是⼀个清空,还有就是限制⽂本框的输⼊字符。【此处清空加⼀个Combox控件,在运⽤这个控件的时候,如果下拉框添加了过多的内容的话,那就可能显⽰出来的⼗好⼏条,导致整个窗体可能都是这个下拉框,这样就会很难看,此时就需要对下拉框显⽰个数进⾏⼀下设置,保证美观。】
实践
清空⽂本框
任何难题的的敌⼈都是实践,花时间去实践,任何问题都是so easy的。清空⽂本框我们可能就就是运⽤⼀下的代码
public void Btnclear_Click(object sender,EventArgs e)
{
<="";  =""
="";
}
以上⽅法对于少数的,⼀个窗体中如果有⼀两个或者三四个的⽂本框是=时⽐较⽅便,但是如果⼀个窗体上有⼗⼏个⽂本框需要清空的话,这样就很⿇烦了,还很有可能会漏掉⼏个没有清空,多次调试,浪费时间。那么有没有想过有⼀种⽅法可以同时清除呢?接下来给你提供代码了【运⽤foreach⽅法,遍历整个窗体或者某个⽂本框中的⽂本框或者下拉框控件,进⾏删除就真的so easy了,绝对不会落下某⼀个控件,相信计算机的搜索能⼒】:
private void BtnClean_Click(object sender, EventArgs e)
{
//清空窗体⽂本框
foreach (Control control in this.Controls)
{
if (control is TextBox || control is ComboBox)
{
control.Text = "";
}
}
//清空容器内⽂本框
foreach (Control control in gb1.Controls)
{textbox控件边框设置
if (control is TextBox ||control is ComboBox)
{
control.Text = "";
}
}
}
限制⽂本框的输⼊
1.  这种问题⽆论是在VB还是C#还是以后的语⾔中,限制字符的输⼊是必不可少的,⾮常简单的⼀个⽅法就是:建⼀个限制的类,⽐如Impose类,⾥⾯有限制只能输⼊数字的⽅法,只能输⼊汉字和字母的⽅法、只能输⼊字母和数字的⽅法,窗体中需要的时候,直接调⽤法即可:Impose.setNumber(e);
using System;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace UI
{
public partial class Impose
{
/// <summary>
/// 限制只可输⼊数字
/// </summary>
/// <param name="e"></param>
public static void setNumber(KeyPressEventArgs e)
{
//IsDigit 判断的是⼗进制数字,就是 '0 '..'9 '。
if (e.KeyChar != '\b' && !Char.IsDigit(e.KeyChar))//\b是退格键
{
e.Handled = true;
MessageBox.Show("请输⼊数字", "温馨提⽰", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
/// <summary>
/// 限制只能输⼊汉字或字母
/// </summary>
/// <param name="c"></param>
public static void setChinese(KeyPressEventArgs e)
{
Regex rg = new Regex(@"^[\u4e00-\u9fa5a-zA-Z\b]+$");
if (!rg.IsMatch(e.KeyChar.ToString()))
{
e.Handled = true;
MessageBox.Show("只能输⼊汉字或字母!", "温馨提⽰", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
/// <summary>
/// 只能输⼊字母或数字
/// </summary>
/// <param name="e"></param>
public static void setEnglishOrNum(KeyPressEventArgs e)
{
if ((e.KeyChar >= 'a' && e.KeyChar <= 'z') || (e.KeyChar >= 'A' && e.KeyChar <= 'Z')
|| (e.KeyChar >= '0' && e.KeyChar <= '9') || (e.KeyChar == 8))
{
e.Handled = false;
}
else
{
e.Handled = true;
MessageBox.Show("密码只能是字母或者数字!", "温馨提⽰", MessageBoxButtons.OK, MessageBoxIcon.Information);                return;
}
}
}
}
2.今天对邮箱的设置时候,遇到⼀个问题,那就是如何不能输⼊汉字,可以只限制汉字,这种⽅法和上⾯限制⼀样,但是可以运⽤其他的⽅法,那就是如果输⼊汉字,怎样才能转换为英⽂ ,于是开始进⾏探索。记得看过⼀个视频,上⾯有过讲解,进⾏⼀次复习,然后出现了⼀下的代码。
【注:此种⽅法需要安装⼀个类库【】,安装第⼀个,然后引⽤以下第⼆章图⽚两个,】
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.ObjectModel;
using Microsoft.International.Converters.PinYinConverter;
namespace UI
{
public partial class GetPinyin
{
public static string Pinyin(string s1)
{
string s2 = "";
foreach (char c in s1)
{
ChineseChar cc = new ChineseChar(c);
//s2 += cc.Pinyins[0]  显⽰拼⾳和声调
// s2 += cc.Pinyins[0][0]  显⽰拼⾳⾸字母
//显⽰拼⾳,此时是⼩写【如果没有ToLower则是⼤写】
s2 += cc.Pinyins[0].Substring(0,cc.Pinyins[0].Length-1).ToLower();
}
return s2;
}
}
}
此种⽤法有点限制,那就是只能判断第⼀个输⼊汉字,然后转为拼⾳,然后下⼀个调⽤的时候会调⽤转换的字母,进⽽会出错。【如果你⽤的话没有错,希望可以指导⼀下】。
3.第三种⽅法是我感觉⽐较常见的⼀种⽅式,那就是设置⽂本框获取焦点的时候,属性修改为只输⼊英⽂【除⾮修改】,不能输⼊汉字, 此时涉及到TextBox⽂本框中的⼀个新的属性:textBox.ImeMode;查完此属性才知道功能如此强⼤,我们在点击输⼊密码的时候,会直接显⽰输⼊英⽂,其实就是对此属性的设置。
使⽤此属性尽量和⽂本框的Click事件结合使⽤,点击⽂本框时更改属性:
设置⽂本框中⽆内容是显⽰灰⾊提⽰:
此想法来⾃于师傅的意见,在进⾏重构⼀遍验收的时候,在输⼊卡号的时候如果没有输⼊数字的话就会提⽰输⼊数字,输错⼀次提⽰⼀次,这样可能会给⽤户带来烦躁感,于是就提出可以限制⽂本框的输⼊长度,在⽂本框内显⽰灰⾊的⽂本提⽰输⼊数字,这样的话那么只要是认识字的那就应该不会去输⼊其他的东西了。
这种⽅式主要⽤到了两个新的事件⽅法:Enter和Leave事件。
Enter:当控件是窗体的活动控件时发⽣
Leave:当控件不再是窗体的活动控件时发⽣
private void txtRecharge_Enter(object sender, EventArgs e)
{
if (txtRecharge.Text == "[请输⼊充值⾦额]")
{
txtRecharge.Text = "";
}
}
private void txtRecharge_Leave(object sender, EventArgs e)
{
if (txtRecharge.Text == "")
{
txtRecharge.Text = "[请输⼊充值⾦额]";
//⽂本框内字体的颜⾊(灰⾊)
txtRecharge.ForeColor = Color.Gray;
}
}
运⾏结果:
限制下拉框的显⽰条数
此设置只需要更改⼀个属性即可完成:MaxDropDownItems 想要显⽰⼏条就改为⼏条就可以了
设置datagridview某⼀⾏显⽰格式为“*”

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。