Winform关于文本框(textbox)清空和限制输入【灰色显示】

game365备用网址 📅 2025-10-28 06:39:51 👤 admin 👁️ 1966 ❤️ 359
Winform关于文本框(textbox)清空和限制输入【灰色显示】

目录

前言

实践

清空文本框

限制文本框的输入

设置文本框中无内容是显示灰色提示:

限制下拉框的显示条数

设置datagridview某一行显示格式为“*”

前言

最近一直在优化TextBox,这个控件用的很普遍,用法也特别的多,最近用的最多的是一个清空,还有就是限制文本框的输入字符。【此处清空加一个Combox控件,在运用这个控件的时候,如果下拉框添加了过多的内容的话,那就可能显示出来的十好几条,导致整个窗体可能都是这个下拉框,这样就会很难看,此时就需要对下拉框显示个数进行一下设置,保证美观。】

实践

清空文本框

任何难题的的敌人都是实践,花时间去实践,任何问题都是so easy的。清空文本框我们可能就就是运用一下的代码

public void Btnclear_Click(object sender,EventArgs e)

{

txtcard.text=""; txtuserid.text=""

cb.age.text="";

}

以上方法对于少数的,一个窗体中如果有一两个或者三四个的文本框是=时比较方便,但是如果一个窗体上有十几个文本框需要清空的话,这样就很麻烦了,还很有可能会漏掉几个没有清空,多次调试,浪费时间。那么有没有想过有一种方法可以同时清除呢?接下来给你提供代码了【运用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)

{

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

{

///

/// 限制只可输入数字

///

///

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;

}

}

///

/// 限制只能输入汉字或字母

///

///

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;

}

}

///

/// 只能输入字母或数字

///

///

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某一行显示格式为“*”

//查询用户使密码列显示为“*“号

private void dgvList_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)

{

if (e.ColumnIndex == 1)

{

if (e.Value != null && e.Value.ToString().Length > 0)

{

e.Value = new string('*', e.Value.ToString().Length);

}

}

}

遇到问题就去查,花时间攻克,收获就会很多。

相关推荐

凤仙花的生命周期
365足球打水封号还严重嘛

凤仙花的生命周期

📅 06-27 👁️ 2874