WPF中如何遍历所有TextBox检查是否存在空文本框 要求用户填写全部字段
遍历TextBox检查空值实现方案
你当前使用的是WPF框架,可以通过遍历可视化树的方式批量检查所有文本框的填写状态,具体实现如下:
步骤1:添加遍历可视化树的辅助方法
在当前窗口的类中添加如下通用方法,用于获取指定父容器下所有指定类型的子控件:
private IEnumerable<T> GetVisualChildren<T>(DependencyObject parent) where T : DependencyObject { if (parent == null) yield break; for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++) { var child = VisualTreeHelper.GetChild(parent, i); if (child is T targetTypeChild) { yield return targetTypeChild; } foreach (var descendant in GetVisualChildren<T>(child)) { yield return descendant; } } }
步骤2:修改点击事件的检查逻辑
替换你原有代码中注释的检查逻辑即可:
private void Add_Click(object sender, RoutedEventArgs e) { // 检查所有文本框是否存在空白内容 bool hasEmptyTextBox = GetVisualChildren<TextBox>(this) .Any(textBox => string.IsNullOrWhiteSpace(textBox.Text)); if (hasEmptyTextBox) { MessageBox.Show("请填写所有字段的值"); } else { // 原有提交逻辑不变 Window1 w1 = new Window1(customername.Text, "", "", "", Phoneno.Text, Symptoms.Text, Total.Text, datepick); this.Hide(); this.Owner.Show(); } }
可选优化
如果你页面中存在部分不需要检查的文本框,可以给必填的文本框设置Tag属性为"Required",然后修改检查逻辑做过滤即可:
bool hasEmptyTextBox = GetVisualChildren<TextBox>(this) .Where(textBox => textBox.Tag as string == "Required") .Any(textBox => string.IsNullOrWhiteSpace(textBox.Text));
内容的提问来源于stack exchange,提问作者Bill Joeden
相关产品推荐
相关产品推荐

