以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教老师,Sender不大了解怎么使用  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=117755)

--  作者:wakai
--  发布时间:2018/4/18 17:35:00
--  请教老师,Sender不大了解怎么使用
If Tables("包材申购窗体_包材申请表").Current IsNot Nothing Then
Dim ctl As WinForm.Control = e.Sender
Dim r As Row = Tables("包材申购窗体_包材申请表").Current
If r("采购进度") = "申请中" Then
    ctl.ReadOnly = BooleanEnum.False \'允许编辑
Else
    ctl.ReadOnly = BooleanEnum.True \'禁止编辑
End If
End If
以上代码执行后,将窗口所有控制都限制了,如要将名称为“商品ID”,“品牌”控件能正常编辑不受控制要如何写

--  作者:有点甜
--  发布时间:2018/4/18 18:12:00
--  
If Tables("包材申购窗体_包材申请表").Current IsNot Nothing Then
    Dim ctl As WinForm.Control = e.Sender
    If ctl.name <> "商品ID" AndAlso ctl.name <> "品牌" Then
        Dim r As Row = Tables("包材申购窗体_包材申请表").Current
        If r("采购进度") = "申请中" Then
            ctl.ReadOnly = BooleanEnum.False \'允许编辑
        Else
            ctl.ReadOnly = BooleanEnum.True \'禁止编辑
        End If
    End If
End If

--  作者:wakai
--  发布时间:2018/4/19 11:14:00
--  
谢谢甜老师,如果控件名比较多怎么简化下代码,如
If ctl.name <> "查询订单明细ID" AndAlso ctl.name <> "品牌" AndAlso ctl.name <> "查询商品ID" AndAlso ctl.name <> "查询名称" AndAlso ctl.name <> "查询进度" Then

--  作者:有点甜
--  发布时间:2018/4/19 11:22:00
--  

Dim cs() As String = {"id", "品牌", "查询商品ID"}

If array.IndexOf(cs, ctl.name) < 0 Then


--  作者:huangfanzi
--  发布时间:2018/4/19 12:32:00
--  
这个代码好,我项目中也是好多像3楼哪样的代码,有时,要判断的字段多了,代码好长的,刚试了下甜老师的代码,确实简洁。