目標:使用第一個GotFocus
過程將焦點從一個命令按鈕重定向到另一個命令按鈕。由另一個SetFocus啓動的GotFocus過程中的SetFocus
上下文:我在通用模塊中有一個與表單無關的過程,在大多數表單上,在保存上一條記錄後,將焦點設置到NewRecord按鈕。但是在一種形式中,我想重定向(基於某些條件)焦點回到SignRecord按鈕,這樣用戶就可以「簽名」同一記錄的第二部分(我將來可能需要這個部分用於其他用途)。目標控件已啓用且可見,並且可在其他情況下進行聚焦,並且在未發生重定向時可以集中原始控件。下面的參考文獻[2]意味着這應該是可能的,儘管我沒有改變我的控件的可見性。
問題:當在GotFocus
過程中符合條件以重定向焦點時,它將根據需要重定向,但原始(測試)SetFocus
調用將引發「運行時錯誤」2110',無法將焦點移動到控件CommandNew」。
我試過的東西:
Exit Sub
後我的下游SetFocus
調用。
Call CommandSign.SetFocus
希望它可以在以前的SetFocus
過程之外發生。
在模塊中,
Public Sub test()
Forms("TargetForm").CommandNew.SetFocus 'This gets the error '2110'
End Sub
在 'TargetForm',
Private Sub CommandNew_GotFocus()
If IsNull(textDateTime) Then Exit Sub 'Works as expected
'I can see these two parts work. The framSign value changes
'and CommandSign gets focus
If checPPC And IsNull(textSigID_PPC) And framSign = 2 Then
framSign = 1
CommandSign.SetFocus
ElseIf checDAS And IsNull(textSigID_DAS) And framSign = 1 Then
framSign = 2
CommandSign.SetFocus
End If
End Sub
參考文獻:
[1]:SelectNextControl() a bad idea in a GotFocus event?
[2]:http://www.access-programmers.co.uk/forums/showthread.php?t=100071
有趣的是,當CommandNew按鈕,通過點擊,然後拖曳關獲得焦點,這個工作沒有問題。 – usncahill
如果從有問題的表單上的測試按鈕發送了「SetFocus」調用,也會出現此錯誤「2110」。 – usncahill