2016-06-08 64 views
0

我在一個窗體上有6個組合框 - 它們在一個數組中。它們被稱爲cboClient(0)到cboClient(5)。我想在這裏做的是驗證有一個值,東西沿線的組合框驗證

if cboclient(0)<>"" and not isnull(cboClient(0)) then 
    'Do this 
End if 

每個CBO獲取與項目相同的列表填充。我的目標是確保用戶不能在超過1個cbo中進行相同的選擇。基本上,如果他們選擇cboClient(0)中的項目1,則該項目不能在其他任何cbo中選擇。

我試圖找到一種方法,以便我可以在儘可能少的幾行內做到這一點,但我可能會這樣做,但這將會非常長,因爲我必須驗證每個cbo對其他

if cboClient(0).text <> cboClient(1).text then 
    msgbox "OK" 
Else 
    msgbox "Please choose again" 
End if 

我試圖以某種方式將它寫入循環?驗證每個cbo中的.text,並確保沒有兩個相同的選擇。任何想法?

編輯: 我有6個cbo的 - 每個人都填充相同的數據(比如數據編號1到10)。如果用戶在cboClient(0)中選擇「1」,他們不能在另一個cbo中選擇它。我不一定要將它隱藏起來 - 但是一旦他們點擊了保存 - 我想要有一個功能來運行CBO,並檢查他們是否多次選擇了同一個項目 - 如果他們有,我想給他們一個MsgBox說:「修復你的選擇,你不能有兩個項目」

編輯2:

也許做兩個循環 - 內一個又一個......

dim a as integer 
dim b as integer 

for a = 0 to 5 
    for b = 1 to 5 
     if cboClient(a).text <> cboclient(b).text then 
      'keep going 
     else 
      MsgBox "you have made the same selection" 
     End if 
    next b 
next a 

類似的東西?

+1

標籤和標題VB.NET已經是一個謊言。 VB.NET中沒有控件數組。無論如何,一旦它被選中,我會做的就是*從所有其他組合框中移除該項目。這樣,用戶不會意外地選擇它。比消息框更友好的用戶界面。是的,你可以使用循環。目前還不清楚你的實際問題是什麼。 –

+0

我對Tag的道歉。我有6個cbo - 每個人都有相同的數據(比如數據編號1到10)。如果用戶在cboClient(0)中選擇「1」,他們不能在另一個cbo中選擇它。我不一定要將它隱藏起來 - 但是一旦他們點擊了保存 - 我想要有一個功能來運行CBO,並檢查他們是否多次選擇了同一個項目 - 如果他們有,我想給他們一個MsgBox說:「修復你的選擇,你不能有兩個項目」 – LD16

+0

這聽起來像一個多選列表框會更合適 – Plutonix

回答

1

試試這個代碼:

For i = 0 To 5 
    For j = 0 To 5 
     If i <> j And cboClient(i).Text = cboClient(j).Text Then 
      MsgBox "You must choose diffirent values, Please choose again" 
      Exit Sub 
     End If 
    Next 
Next 
+0

謝謝!我只是在想同樣的事情 - 效果很好,我只是不會循環遍歷所有的值,但MSGBOX第一次遇到重複的選擇。 – LD16

+1

很高興聽到!我更改代碼以顯示第一次遇到重複選擇時的消息!也謝謝你 :) –