top
Loading...
VB中防止將重復項目添加到列表框控件中
isualBasic的列表框控件中包含項目的列表,本文介紹如何檢查列表中項目是否已 經存在,以及如何將新的項目添加到列表框控件中。

使用SendMessage函數搜尋重復的項目
在VisualBasic中開發應用程序時,可以使用列表框控件來創建一個項目的列表。要將 新的項目添加到列表中,可以使用AddItem方法,該方法不能自動地報告在列表框控件中是否 有重復的信息存在,所以必須在將新項目添加到列表之前首先檢查一下。

可以通 過使用Windows應用程序編程接口(API)的SendMessage函數來在列表框控件中搜尋指定的項 目,它函數允許向操作系統中發送消息。在本文的例子里,我們讓SendMessage函數往列表框 控件中執行一個LB_FINDSTRING消息。

LB_FINDSTRING消息允許在一個列表框控 件中搜索同目標字符串相匹配的項目。該消息的第一個參數是希望進行的搜索類型,須將該 值設為0,表示從列表框控件中的第一個項目開始搜索。第二個參數是一個NULL結束的字符串, 它是實際希望搜索的項目。

如果該LB_FINDSTRING消息返回值-1,則表明在列表 框控件中沒有找到目標字符串,此時可以使用AddItem方法來將新的項目添加到列表框控件 中。如果該項目已經在列表中存在,則可以簡單地顯示一個信息框或是執行一些其它的過程, 來通知用戶一個重復的項目已經在列表框控件中存在。

樣例程序
該程序顯示了如何確定在一個列表框控件中是否已經包含了一個要添加到控件中的項 目。

1.在VisualBasic中開始一個新的工程,采用缺省的方法建立Form1。
2.將如下常量和聲明語句添加到Form1的通用聲明部分中(注意該聲明語句需要被書 寫在一行內):
PrivateDeclareFunctionSendMessageFindLib"user32"Alias"SendMessageA" (ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsInteger,ByVallParam AsString)AsLong
ConstWM_USER=&H400
ConstLB_ERR=(-1)
ConstLB_FINDSTRING=&H18F

3.將如下代碼添加到Form1的Form_Load 事件中:

PrivateSubForm_Load()
List1.AddItem"Item#1"
List1.AddItem"Item#2"
List1.AddItem"Item#3"
List1.AddItem"Item#4"
EndSub

4.在Form1上添加一個文本框控件,采用缺省的方法建立Text1。
5.在Form1上添加一個列表框控件,采用缺? 方法建立List1。
6.在Form1上添加一個命令按鈕控件,采用缺省的方法建立Command1,將起Caption屬 性設置為“重復”。
7.將如下代碼添加到Command1的單擊事件中:

PrivateSubCommand1_Click()
CheckForDupes
EndSub

8.創建一個新的名為CheckForDupes的函數,將如下代碼添加到該函 數中:

SubCheckForDupes()
DimRetAsLong
DimAAsString
A=Text1.TEXT
Ret=SendMessageFind(List1.hwnd,LB_FINDSTRING,0,(A))
IfRet=LB_ERRThen
List1.AddItemText1.TEXT
Else
List1.ListIndex=Ret
MsgBox"重復項目-不能被添加到列表框中",16,"錯誤"
EndIf
EndSub

按下F5鍵來執行本程序。在列表框控件中有5個項目。在文本框控件中 鍵入一個新的項目,單擊重復命令按鈕。程序將在列表框控件中搜索剛剛鍵入到文本框控件 中的項目。如果該項目未被找到,則程序將把該項目添加到列表框控件中。相反,如果該項目 已經在列表框中存在了,則將顯示出一個信息框以通知項目已經存在。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗