2015-12-16 60 views
0

我有一個用戶窗體,它使用多個ListBox以及TextBox控件。我設置了Tab鍵順序,以便用戶可以按順序依次選擇控件。我還編寫了一個函數來檢查空的和/或未選中的控件,強制用戶填寫整個表單,因此希望所有控件值都爲空,直到用戶選中該控件並鍵入一個值以確保控件不是「看着。呼叫控制在重新輸入時輸入事件

我有ListBox(n).Listindex在Control_Enter事件而不是-1上的默認值爲0。這允許用戶在控制中進行標記,並順利地按下列表。這適用於用下面的代碼的第一個條目:

Private Sub ListBox1_Enter() 
Me.ListBox1.ListIndex = 0 
End Sub 

一旦提交表單數據,即CommandButton1_Click(),該數據被放置到工作表中,所有控制值被清除,並且焦點被放回到第一控制形式。但是,當列表框控件選項卡時,ListIdex默認返回-1。爲什麼不觸發Control_Enter事件?

回答

0

Control_Enter事件發生在控件獲得焦點之前,例如通過在控件上進行切換。但是,直到用戶退出該控件後纔會再次發生。如果你想處理一種重新輸入事件,那麼你需要以編程方式退出該控件。我相信把重點放在另一個控制上就行了,例如CommandButton1.SetFocus

但是,我不禁想到用戶的界面體驗會很奇怪。用戶選擇控件時更改控件可能會導致用戶錯誤地解釋他的界面操作,或者如果應用程序無法控制。

我很努力地想知道爲什麼當應用程序啓動時不會設置ListBox值,然後每當您處理其選擇時。據推測,有一些代碼可以處理ListBox值,甚至可能由某種執行CommandButton觸發。我會重置該代碼末尾的默認值。通過這種方式,用戶會發現他的選擇已經成功處理。

+0

我編輯了這個問題,試圖澄清我試圖實現的目標。我沒有運氣使用Control.SetFocus。我也希望保持ListBox值清除,直到用戶選項卡進入控件,以便我知道用戶在提交數據之前訪問了表單中的每個字段。 –