Foxtable(狐表)用户栏目专家坐堂 → 判断窗口下的所有控件的.Value都不为空


  共有2958人关注过本帖树形打印复制链接

主题:判断窗口下的所有控件的.Value都不为空

帅哥哟,离线,有人找我吗?
lovepisss
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:47 积分:495 威望:0 精华:0 注册:2018/2/11 12:44:00
判断窗口下的所有控件的.Value都不为空  发帖心情 Post By:2020/9/4 1:15:00 [只看该作者]

请问如何简单的判断窗口下的所有控件的.Value都不为空?
我的做法:
With Forms("t_x_新增购置计划")
    If .Controls("TextBox序号").Value Is Nothing OrElse .Controls("NumericComboBox购置计划").Value Is Nothing OrElse .Controls("TextBox记录人").Value Is Nothing OrElse .Controls("DateTimePicker记录时间").Value Is Nothing Then
...
End With

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/4 9:40:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
WELOVEFOX
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:466 积分:3382 威望:0 精华:0 注册:2016/12/21 22:58:00
  发帖心情 Post By:2020/9/4 9:48:00 [只看该作者]

For Each c As WinForm.Control In e.Form.Controls
    If Typeof c Is WinForm.TextBox Then '判断控件是否是文本框
        Dim t As WinForm.TextBox = c '使用特定类型的变量引用控件
If        t.Value = Nothing Then
MessageBox.Show("文本控件不能为空!")
t.Select()
Return
End If
    End If
Next


For Each c As WinForm.Control In e.Form.Controls
    If Typeof c Is WinForm.ComboBox Then '判断控件是否是文本框
        Dim t As WinForm.ComboBox = c '使用特定类型的变量引用控件
If        t.Value = Nothing Then
MessageBox.Show("组合框不能为空!")
t.Select()
Return
End If
    End If
Next

For Each c As WinForm.Control In e.Form.Controls
    If Typeof c Is WinForm.DateTimePicker Then '判断控件是否是文本框
        Dim t As WinForm.DateTimePicker = c '使用特定类型的变量引用控件
If        t.Value = Nothing Then
MessageBox.Show("日期框不能为空!")
t.Select()
Return
End If
    End If
Next
[此贴子已经被作者于2020/9/4 9:48:38编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/4 10:10:00 [只看该作者]

合并为一段代码即可

For Each c As object  In e.Form.Controls
    If Typeof c Is WinForm.TextBox OrElse Typeof c Is WinForm.ComboBox OrElse Typeof c Is WinForm.DateTimePicker  Then '判断控件是否是文本框
        If c.Value = Nothing Then
            MessageBox.Show(c.name & "控件不能为空!")
            c.Select()
            Return
        End If
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
lovepisss
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:47 积分:495 威望:0 精华:0 注册:2018/2/11 12:44:00
回复:(有点蓝)窗口:http://www.foxtable.com/webh...  发帖心情 Post By:2020/9/4 12:14:00 [只看该作者]

谢谢蓝大!

 回到顶部
帅哥哟,离线,有人找我吗?
lovepisss
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:47 积分:495 威望:0 精华:0 注册:2018/2/11 12:44:00
回复:(WELOVEFOX)For Each c As WinForm.Control I...  发帖心情 Post By:2020/9/4 12:14:00 [只看该作者]

谢谢大佬

 回到顶部
帅哥哟,离线,有人找我吗?
lovepisss
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:47 积分:495 威望:0 精华:0 注册:2018/2/11 12:44:00
回复:(有点蓝)窗口:http://www.foxtable.com/webh...  发帖心情 Post By:2020/9/4 12:39:00 [只看该作者]

蓝大,我看了帮助页,里面提到
如果我希望清除窗口中所有文本框的内容,…,但是遍历控件的时候,只能使用WinForm.Control类型的变量,
教学代码如下
For Each c As WinForm.Control In e.Form.Controls
    If
 Typeof c Is WinForm.TextBox Then '判断控件是否是文本框
        
Dim t As WinForm.TextBox = c '使用特定类型的变量引用控件
        t.Value = 
Nothing
    End
 If
Next

请问为什么不可以写成
For Each c As WinForm.TextBox In e.Form.Controls

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/4 13:36:00 [只看该作者]

因为有些控件可能不是WinForm.TextBox

 回到顶部