Foxtable(狐表)用户栏目专家坐堂 → [求助]窗口控件联动 代码修改


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

主题:[求助]窗口控件联动 代码修改

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


加好友 发短信
等级:幼狐 帖子:83 积分:637 威望:0 精华:0 注册:2013/3/28 14:15:00
[求助]窗口控件联动 代码修改  发帖心情 Post By:2020/4/8 13:11:00 [只看该作者]

Dim str As String =e.Form.Controls("cplx").Value '控件1值
Dim str1 As String '控件2名称
Dim str2 As String '控件2值
Dim str3 As String '控件3名称
For Each ctl As WinForm.Control In e.Form.Controls '遍历所有控件
    If TypeOf ctl Is WinForm.ComboBox Then
        str1 = e.Form.Controls(ctl.Name) '
        str2= e.Form.Controls(str1).Value '效果:
        str3 = "dw"&Right(str1,1) '  控件2名称=”fjmc1” 有1-20个 对应 控件3名称=”dw1”有1-20个
        If str2 = Nothing  Then '控件2值为空,那么控件3值为空
            e.Form.Controls(str3).value = Nothing '效果:控件3值为空
        Else
            e.Form.Controls(str3).value =DataTables("字典").Find(str&"_辅件_名称" = str2,str&"_辅件_单位")  '控件3值          '
            '查找字典表 str&"_辅件_名称" 列 对应 str&"_辅件_单位"的数据
        End If
    End If
Next
'整体思路,当控件2选择后,根据其值不同在控件3中自动填入字典表的对应单位,目前的问题就是控件3赋值,代码写不好


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


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

没看懂。截图说明一下

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


加好友 发短信
等级:幼狐 帖子:83 积分:637 威望:0 精华:0 注册:2013/3/28 14:15:00
  发帖心情 Post By:2020/4/8 14:59:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20200408145402.png
图片点击可在新窗口打开查看
第二处值改变,第三处值根据 字典表查找自动填入
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20200408145533.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:幼狐 帖子:83 积分:637 威望:0 精华:0 注册:2013/3/28 14:15:00
回复:(有点蓝)没看懂。截图说明一下  发帖心情 Post By:2020/4/8 15:00:00 [只看该作者]

其实就类似 以前易表的 FINDTEXT功能

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


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

控件2名称是不是都是fjmc开头,控件3是不是都是dw开头?如果不是,统一有规律的设置一下控件的命名


全局事件valuechanged

if e.sender.name like "fjmc*"  then
Dim str As String =e.Form.Controls("cplx").Value
dim dr as datarow = DataTables("字典").Find(str & "_辅件_名称 = '" & e.sender.text & "'")
if dr isnot nothing then
    e.Form.Controls("dw" & e.sender.name.replace("fjmc","")).text = dr(str & "_辅件_单位")
end if
end if

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


加好友 发短信
等级:幼狐 帖子:83 积分:637 威望:0 精华:0 注册:2013/3/28 14:15:00
回复:(有点蓝)控件2名称是不是都是fjmc开头,控件3是...  发帖心情 Post By:2020/4/9 9:51:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:jdfw.gif
图片点击可在新窗口打开查看
蓝老师,这个代码还差一点点。
不加MessageBox点击后没有效果
如果加上MessageBox调试有值输入,但是同时会清空其他的值

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20200409094826.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:幼狐 帖子:83 积分:637 威望:0 精华:0 注册:2013/3/28 14:15:00
  发帖心情 Post By:2020/4/9 9:53:00 [只看该作者]

If e.sender.name Like "fjxx*"  Then
    Dim str As String =e.Form.Controls("cplx").Value
    'MessageBox.Show(str)
    Dim str2 As String ="dw" & e.sender.name.replace("fjxx","")
    MessageBox.Show(str2)
    'If str = Nothing  Then
    '    e.Form.Controls(str2).text = Nothing
   ' Else
        Dim dr As  DataRow= DataTables("字典").Find(str & "_辅件_名称 = '" & e.sender.text & "'")
        ' MessageBox.Show(str & "_辅件_单位")
        If dr IsNot Nothing Then
            e.Form.Controls(str2).text = dr(str & "_辅件_单位")
        End If
    'End If
End If

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


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

这个代码不可能会清空其它控件数据。肯定是其它代码的问题

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


加好友 发短信
等级:幼狐 帖子:83 积分:637 威望:0 精华:0 注册:2013/3/28 14:15:00
  发帖心情 Post By:2020/4/9 11:05:00 [只看该作者]

这里是全部代码

If e.sender.name Like "cplx"  Then
    For Each ctl As WinForm.Control In e.Form.Controls '遍历所有控件
        Dim cmb As WinForm.ComboBox
        If TypeOf ctl Is WinForm.ComboBox Then
            cmb = e.Form.Controls(ctl.Name)
            Dim str As String =e.Form.Controls("cplx").Value
            If str = Nothing  Then
                cmb.ComboList = Nothing
            Else
                If ctl.Name Like "bwmc*" Then
                    cmb.ComboList = DataTables("字典").GetComboListString(str & "_部位名称", str & "_部位名称 is not null")
                ElseIf  ctl.Name Like "fjxx*" Then
                    cmb.ComboList = DataTables("字典").GetComboListString(str & "_辅件_名称", str & "_辅件_名称 is not null")
                End If
            End If
        End If
    Next
ElseIf e.sender.name Like "fjxx*"  Then
    Dim str As String =e.Form.Controls("cplx").Value
    'MessageBox.Show(str)
    Dim str2 As String ="dw" & e.sender.name.replace("fjxx","")
    'MessageBox.Show(str2)
    'If str = Nothing  Then
    '    e.Form.Controls(str2).text = Nothing
   ' Else
        Dim dr As  DataRow= DataTables("字典").Find(str & "_辅件_名称 = '" & e.sender.text & "'")
        ' MessageBox.Show(str & "_辅件_单位")
        If dr IsNot Nothing Then
            e.Form.Controls(str2).text = dr(str & "_辅件_单位")
        End If
    'End If
End If
图片点击可在新窗口打开查看此主题相关图片如下:jdfw.gif
图片点击可在新窗口打开查看

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


加好友 发短信
等级:幼狐 帖子:83 积分:637 威望:0 精华:0 注册:2013/3/28 14:15:00
回复:(有点蓝)这个代码不可能会清空其它控件数据。...  发帖心情 Post By:2020/4/9 11:06:00 [只看该作者]

请老师再看看,哪里出了问题

 回到顶部
总数 15 1 2 下一页