首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Visual Basic > VB中防止将重复项目添加到列表框控件中
【标  题】:VB中防止将重复项目添加到列表框控件中
【关键字】:控件,VB,VB
【来  源】:网络

VB中防止将重复项目添加到列表框控件中

---- Visual Basic 的 列 表 框 控 件 中 包 含 项 目 的 列 表, 本 文 介 绍 如 何 检 查 列 表 中 项 目 是 否 已 经 存 在, 以 及 如 何 将 新 的 项 目 添 加 到 列 表 框 控 件 中。

使 用SendMessage 函 数 搜 寻 重 复 的 项 目
---- 在Visual Basic 中 开 发 应 用 程 序 时, 可 以 使 用 列 表 框 控 件 来 创 建 一 个 项 目 的 列 表。 要 将 新 的 项 目 添 加 到 列 表 中, 可 以 使 用AddItem 方 法, 该 方 法 不 能 自 动 地 报 告 在 列 表 框 控 件 中 是 否 有 重 复 的 信 息 存 在, 所 以 必 须 在 将 新 项 目 添 加 到 列 表 之 前 首 先 检 查 一 下。

---- 可 以 通 过 使 用Windows 应 用 程 序 编 程 接 口(API) 的SendMessage 函 数 来 在 列 表 框 控 件 中 搜 寻 指 定 的 项 目, 它 函 数 允 许 向 操 作 系 统 中 发 送 消 息。 在 本 文 的 例 子 里, 我 们 让SendMessage 函 数 往 列 表 框 控 件 中 执 行 一 个LB_FINDSTRING 消 息。

---- LB_FINDSTRING 消 息 允 许 在 一 个 列 表 框 控 件 中 搜 索 同 目 标 字 符 串 相 匹 配 的 项 目。 该 消 息 的 第 一 个 参 数 是 希 望 进 行 的 搜 索 类 型, 须 将 该 值 设 为0, 表 示 从 列 表 框 控 件 中 的 第 一 个 项 目 开 始 搜 索。 第 二 个 参 数 是 一 个NULL 结 束 的 字 符 串, 它 是 实 际 希 望 搜 索 的 项 目。

---- 如 果 该LB_FINDSTRING 消 息 返 回 值-1, 则 表 明 在 列 表 框 控 件 中 没 有 找 到 目 标 字 符 串, 此 时 可 以 使 用AddItem 方 法 来 将 新 的 项 目 添 加 到 列 表 框 控 件 中。 如 果 该 项 目 已 经 在 列 表 中 存 在, 则 可 以 简 单 地 显 示 一 个 信 息 框 或 是 执 行 一 些 其 它 的 过 程, 来 通 知 用 户 一 个 重 复 的 项 目 已 经 在 列 表 框 控 件 中 存 在。

样 例 程 序
---- 该 程 序 显 示 了 如 何 确 定 在 一 个 列 表 框 控 件 中 是 否 已 经 包 含 了 一 个 要 添 加 到 控 件 中 的 项 目。

---- 1. 在Visual Basic 中 开 始 一 个 新 的 工 程, 采 用 缺 省 的 方 法 建 立Form1。
---- 2. 将 如 下 常 量 和 声 明 语 句 添 加 到Form1 的 通 用 声 明 部 分 中( 注 意 该 声 明 语 句 需 要 被 书 写 在 一 行 内):
---- Private Declare Function SendMessageFind Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As String) As Long
---- Const WM_USER = &H400
---- Const LB_ERR = (-1)
---- Const LB_FINDSTRING = &H18F

---- 3. 将 如 下 代 码 添 加 到Form1 的Form_Load 事 件 中:

Private Sub Form_Load()
List1.AddItem "Item #1"
List1.AddItem "Item #2"
List1.AddItem "Item #3"
List1.AddItem "Item #4"
End Sub

---- 4. 在Form1 上 添 加 一 个 文 本 框 控 件, 采 用 缺 省 的 方 法 建 立Text1。
---- 5. 在Form1 上 添 加 一 个 列 表 框 控 件, 采 用 缺 省 的 方 法 建 立List1。
---- 6. 在Form1 上 添 加 一 个 命 令 按 钮 控 件, 采 用 缺 省 的 方 法 建 立Command1, 将 起Caption 属 性 设 置 为“ 重 复”。
---- 7. 将 如 下 代 码 添 加 到Command1 的 单 击 事 件 中:

Private Sub Command1_Click()
CheckForDupes
End Sub

---- 8. 创 建 一 个 新 的 名 为CheckForDupes 的 函 数, 将 如 下 代 码 添 加 到 该 函 数 中:

Sub CheckForDupes()
Dim Ret As Long
Dim A As String
A = Text1.TEXT
Ret = SendMessageFind(List1.hwnd, LB_FINDSTRING, 0, (A))
If Ret = LB_ERR Then
List1.AddItem Text1.TEXT
Else
List1.ListIndex = Ret
MsgBox " 重 复 项 目 - 不 能 被 添 加 到 列 表 框 中", 16, " 错 误"
End If
End Sub

---- 按 下F5 键 来 执 行 本 程 序。 在 列 表 框 控 件 中 有5 个 项 目。 在 文 本 框 控 件 中 键 入 一 个 新 的 项 目, 单 击 重 复 命 令 按 钮。 程 序 将 在 列 表 框 控 件 中 搜 索 刚 刚 键 入 到 文 本 框 控 件 中 的 项 目。 如 果 该 项 目 未 被 找 到, 则 程 序 将 把 该 项 目 添 加 到 列 表 框 控 件 中。 相 反, 如 果 该 项 目 已 经 在 列 表 框 中 存 在 了, 则 将 显 示 出 一 个 信 息 框 以 通 知 项 目 已 经 存 在。
运行时改变控件大小的两种方法:【上一篇】
巧用Visual Basic的Timer控件:【下一篇】
【相关文章】
  • VB5.0 调用Microsoft Agent 控件
  • 改进VB的驱动器列表框
  • VB中List 控件的功能扩充
  • 如何用VB 创建控件
  • 如何扩展VB标准控件的功能
  • 如何用Line控件做出分隔线
  • 在VB5中利用Winsock和msDNS控件进行
  • 快速更改组控件属性
  • 给TreeView控件添加节点一例
  • 控件数组的操作技巧
  • 【随机文章】
  • 关于多线程处理--线程切换
  • intelliFlow工作流系统中的异常处理
  • 小游戏做完了
  • 读取光碟数据[转载]
  • .net学习0
  • 开启瑞星邮件监控无法收发邮件
  • 让Windows 2003也用上系统还原
  • 推广网站八大秘笈
  • squid网络加速报告
  • 灯路的控制教程
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.