2011-12-24 20 views
0

當你點擊一個字母的列表框,它會帶你到該字母的第一個匹配。當你再次點擊該字母時,會將你帶到該字母的第二個匹配項等等。我怎樣才能得到一個Microsoft Access組合框的行爲像一個列表框

有沒有辦法讓組合框的行爲方式?

+2

這就是組合框在Access中的工作方式。當你鍵入字母時,這個詞是「猜到的」。這不是爲了你嗎?列表框一般不會這樣。 – Fionnuala

+0

@Remou:實際上,我認爲塞思想要的是這樣的行爲:假設列表「愛麗絲」,「比爾」,「鮑勃」,「查爾斯」。用戶按下「B」並高亮顯示帳單。然後用戶再次按下「B」,現在突出顯示Bob。在列表框中,Bob確實會被突出顯示。在一個組合框中,BB將在組合框中,當然不會有匹配。 Seth:如果我錯了,請糾正我。 – mwolfe02

+0

實質上,您試圖使Access組合框的行爲類似於下拉框。 Access沒有本地下拉框;很大程度上是因爲組合框在大多數情況下滿足了這種需求。有兩個看起來相同但行爲不同的控件會損害用戶界面。考慮到這一點,你可能應該對你的僞下拉控件做些什麼來區分它們和標準的組合框。也許是一個不同的特殊效果:沉沒的組合和升降/下拉等。 – mwolfe02

回答

0

我能想到的最接近的組合框是自動完成屬性。

0

其實,用組合框當你點擊一個字母,它把你的第一場比賽爲字母或從下拉框中選擇......並用列表框你必須從選擇拉下。我想你的問題反過來了。你可能只需要讓你的領域是組合框而不是列表框。

0

除非您想對組合框進行編碼,否則無法使組合框的行爲如此。但是,編碼並不是那麼糟糕。下面的代碼可能可以改進(並且至少應該添加一些錯誤處理),但它會完成工作。

假設你有OnKeyPress名爲ComboBox1一個組合框和OnKeyDown,窗體和OnKeyUp屬性都設置爲[Event Procedure]

Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer) 
Dim Cbo As ComboBox, i As Integer, Val As Variant, CurIndex As Integer 
    Set Cbo = Me.ActiveControl 
    Select Case KeyCode 
    Case vbKeyBack, vbKeyDelete 
     Cbo.Value = Null 
    Case Else 
     CurIndex = Cbo.ListIndex 
     For i = CurIndex + 1 To Cbo.ListCount - 1 
      If Left(Cbo.ItemData(i), 1) = Chr(KeyCode) Then 
       Cbo.Value = Cbo.ItemData(i) 
       Exit Sub 
      End If 
     Next i 
     For i = 0 To CurIndex 
      If Left(Cbo.ItemData(i), 1) = Chr(KeyCode) Then 
       Cbo = Cbo.ItemData(i) 
       Exit Sub 
      End If 
     Next i 
    End Select 
    KeyCode = StripKeyCode(KeyCode) 
End Sub 

Private Sub Combo1_KeyPress(KeyAscii As Integer) 
    KeyAscii = StripKeyCode(KeyAscii) 
End Sub 

Private Sub Combo1_KeyUp(KeyCode As Integer, Shift As Integer) 
    KeyCode = StripKeyCode(KeyCode) 
End Sub 

Private Function StripKeyCode(KeyCode As Integer) As Integer 
    Select Case KeyCode 
    Case vbKeyUp, vbKeyDown, vbKeyLeft, vbKeyRight, vbKeyTab, vbKeyF4 
     'Allow navigation keys to pass through 
     StripKeyCode = KeyCode 
    Case Else 
     StripKeyCode = 0 
    End Select 
End Function 

我懷疑的表現將是所有偉大與組合框一大堆的選擇。然後,再次,您應該只能在以相同字母開頭的項目數量很小(例如,小於5)的情況下使用這種技術。

相關問題