当前位置:网站首页>亲测可用!!!WPF中遍历整个窗口的所有TextBox组件,对每个输入框做非空判断。
亲测可用!!!WPF中遍历整个窗口的所有TextBox组件,对每个输入框做非空判断。
2022-07-31 12:07:00 【Monkey_King_GL】
系列文章目录
WPF中TabControl动态获取当前选中的TabItem
WPF中报错:“未将对象引用设置到对象的实例。”
为了提高用户输入数据的合理性,我们通常需要在提交数据之前对输入框内数据进行一些逻辑判断。我相信很多同学会说可以在后台通过控件获取输入信息再判断,如下:
string text = this.TextBox.Text;
if(string.IsNullOrEmpty(text)
{
MessageBox.Show("输入内容不能为空!!");
}
是的,这样确实可以达到效果,但是你们有没有想过,如果一旦你的输入框很多时,你需要写多少个这样的判断语句?十个?百个?这样太麻烦了,并且前端也要进行相应的操作。
通过遍历组件来实现非空限制
首先,我们知道前端的界面其实是一个属性结构,因此我们可以通过遍历这棵树来获取窗口的所有输入框,代码如下:
private List<DependencyObject> controlList = new List<DependencyObject>(); //存储前端所有的TextBox
public void FindInVisualTreeDown(DependencyObject obj, Type type)
{
if (obj != null)
{
//因为我的界面上有TabControl组件,因此我还需要遍历所有的TabItem
if (obj is TabControl)
{
var tab = obj as TabControl;
foreach (DependencyObject item in tab.Items)
{
FindInVisualTreeDown(item,type);
}
}
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child.GetType() == type)
{
controlList.Add(child);
}
FindInVisualTreeDown(child, type);
}
}
}
至此,我们已经获取到界面所有的TextBox了,我们就可以通过遍历来对输入框内容进行判断了。
public bool TestEmpty(List<DependencyObject> list)
{
bool flag = true;
foreach (var c in list)
{
if (string.IsNullOrEmpty((c as TextBox).Text))
{
string text_Name = (c as TextBox).Name; //获取组件名称
MessageBox.Show(text_Name + "不能为空!!");
flag = false;
break;
}
}
return flag;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
FindInVisualTreeDown(rootGrid, typeof(TextBox));
if (TestEmpty(controlList))
{
//所有的输入框内容都符合要求。。。。
}
else
{
//有输入框还未输入内容。。。。。
}
}
这样,不管我们的窗口界面有多少输入框,我们都可以通过以上代码对输入内容进行判断,过滤出不符合要求的输入框,并提示用户。非常好用!!!!
边栏推荐
- Use ODBC in Excel to read data from CDS view on SAP BTP platform
- Obsidian设置图床
- 基于生物激励神经网络的室内实时激光SLAM控制方法
- 基于C51实现按键控制
- 最长算术(暑假每日一题 11)
- AWS Amazon cloud account registration, free application for 12 months Amazon cloud server detailed tutorial
- Three-tier architecture service, dao, controller layer
- Docker practical experience: Deploy mysql8 master-slave replication on Docker
- If the value of the enum map does not exist, deserialization is not performed
- WebGL给Unity传递参数问题1: Cannot read properties of undefined (reading ‘SendMessage‘)
猜你喜欢

音视频基础

JVS应用中心

Selenium自动化测试之Selenium IDE

Docker practical experience: Deploy mysql8 master-slave replication on Docker

kubernetes之服务发现

am335x 看门狗驱动&看门狗应用例程序

The item 'node.exe' was not recognized as the name of a cmdlet, function, script file, or runnable program.

Initial JDBC programming

Character Functions and String Functions

Experience innovation and iteration through the development of lucky draw mini-programs
随机推荐
A Week of Wonderful Content Sharing (Issue 14)
在 Excel 内使用 ODBC 消费 SAP ABAP CDS view
Build a Valentine's Day confession website (super detailed process, package teaching package)
基于姿态估计的护具佩戴检测与动作识别
给你一个大厂面试的机会,你能面试上吗?进来看看!
全动力学约束的机器人高效时间最优轨迹规划
ESP8266-Arduino编程实例-PIR(被动红外)传感器驱动
想吃菌子,当然是自己上山找了
Detailed tutorial on distributed transaction Seata
Chrome开发自定义右键菜单实现快速跳转到指定页面
初识QEMU
数据持久化技术——MP
关于Mysql数据库的介绍
线性表的基本概念
SAP Commerce Cloud Product Review 的添加逻辑
Read through the interface to call the artifact RestTemplate
使用docker搭建mysql主从
JVS开发套件产品定位
快速学完数据库管理
建情人节表白网站(超详细过程,包教包会)