Foxtable(狐表)用户栏目专家坐堂 → [分享]分享自己做的一个自定义循环查找窗口,菜鸟使用高手跳过


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

主题:[分享]分享自己做的一个自定义循环查找窗口,菜鸟使用高手跳过

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


加好友 发短信
等级:童狐 帖子:262 积分:3597 威望:0 精华:0 注册:2012/5/25 15:31:00
[分享]分享自己做的一个自定义循环查找窗口,菜鸟使用高手跳过  发帖心情 Post By:2019/6/18 23:04:00 [只看该作者]

一直不喜欢官方自己带的查找功能太弱了,刚开始学,自己做了一个循环查找功能
1、先建两个全局变量col和row
2、再建一个窗口,一个textbox控件和一个按钮控件。在按钮控件里加复制以下代码。
Dim textfind As WinForm.TextBox = e.Form.Controls("TextBox1")
Dim y As Integer = CurrentTable.TopPosition
Dim x As Integer = CurrentTable.BottomPosition
If y <> x Then           '只让选择一个焦点单元格,方便定位
    MessageBox.Show("请只选一个单元格")
    Return
End If
If Vars("col") <> 0 And Vars("row") <> 0 Then  '如果全局变量col和row都不为0时赋值所定位的单元格的坐标
    Vars("col") = CurrentTable.ColSel
    Vars("row") = CurrentTable.RowSel
End If
If Vars("col") = CurrentTable.Cols.Count -1 Then '如果定位的单元格列的坐标是最后一列则赋值全局变量col和row
    Vars("col") = -1
    Vars("row") = Vars("row") +1
End If
If textfind.Text <> Nothing Then   '控件textBox1不为空时执行
    If CurrentTable.Rows.Count > 0 Then   '当前表,行大于0时执行(表不为空时执行)
        For i As Integer = vars("row") To CurrentTable.Rows.Count - 1 '循环行
            For j As Integer = vars("col")+1 To CurrentTable.Cols.Count - 1 '循环列
                If CStr(CurrentTable.Rows(i)(CurrentTable.Cols(j).Name)) Like "*" & textfind.Text & "*" Then '判断转换为字符串的单元格数据是不是包含控件textbox1里的数据
                    vars("row") = i   '累加到变量
                    vars("col") = j   '累加到变量
                    CurrentTable.Select(i,j)   '定位当前表的单元格
                    Return   '找到了就终止执行程序
                End If
            Next
            vars("col") = 0 '在所有列没找到就重0列开始
        Next
        vars("col") = 0  '重头再来
        vars("row") = 0  '重头再来
        MessageBox.Show("已找完所有,将重头再找.","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    End If
End If

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


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/6/18 23:15:00 [只看该作者]

多谢分享,不过貌似第一列被忽略了哦,这样改改

……
            vars("col") = -1 '在所有列没找到就重0列开始
        Next
        vars("col") = -1  '重头再来
        vars("row") = 0  '重头再来
……

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


加好友 发短信
等级:童狐 帖子:262 积分:3597 威望:0 精华:0 注册:2012/5/25 15:31:00
  发帖心情 Post By:2019/6/19 12:40:00 [只看该作者]

谢谢蓝版主查看,但没有错啊前面有判断的 f Vars("col") = CurrentTable.Cols.Count -1 Then '如果定位的单元格列的坐标是最后一列则赋值全局变量col和row Vars("col") = -1 Vars("row") = Vars("row") +1 End If
[此贴子已经被作者于2019/6/19 12:40:27编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/19 15:17:00 [只看该作者]

谢谢分享。

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


加好友 发短信
等级:小狐 帖子:335 积分:3051 威望:0 精华:0 注册:2018/5/28 22:12:00
  发帖心情 Post By:2019/12/27 10:16:00 [只看该作者]

感谢分享!我就是要做出这,模仿EXCETX表格的查找功能,结果调试了N个小时,发现越想,越复杂,就来论坛找找,结果真的有,真的万分感谢!

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


加好友 发短信
等级:七尾狐 帖子:1749 积分:11688 威望:0 精华:0 注册:2015/6/22 8:11:00
  发帖心情 Post By:2019/12/27 16:23:00 [只看该作者]

老师,上面代码应用能做个例子吗?

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


加好友 发短信
等级:幼狐 帖子:74 积分:658 威望:0 精华:0 注册:2018/9/10 13:36:00
  发帖心情 Post By:2022/4/12 12:51:00 [只看该作者]

很不错

 回到顶部