我有一个包含2个标签的Tab Control
元素:Tab1和Tab2。 Tab2包含ListBox
元素,其RowSource
查询在Tab1中提交的数据。
假设用户打开包含这两个标签的此表单。它们最初位于Tab1上。在Tab2的Form_Load
事件中,它查询填充其ListBox
所需的数据。现在他们将标签切换到Tab1。他们输入一些数据并将新记录提交到相应的表(Tab2 ListBox用作RowSource
的表)。当用户切换回Tab2时,他们看不到这个新添加的记录。
到目前为止,我所做的是当用户点击ListBox中的任意位置时,它会调用Requery
,然后会显示该记录。这还不够,因为用户不必直接点击列表框来更新其内容。
我尝试将此Requery
代码放在Form_Load,Form_Activate,GotFocus中,但没有任何效果。我知道您可以检测TabControl点击,但是如何访问表单及其包含的元素?
关于如何在标签获得控制权时重新查询此列表框的任何想法?
答案 0 :(得分:0)
您最有可能寻找On Activate
触发器。
然后,在代码中使用Form.Requery
或Form.Recalc
,具体取决于您实际想要做的事情。
或者,您可以使用用户用来提交记录的相同控件来触发重新查询。虽然,这需要特定的Form
成为焦点。
答案 1 :(得分:0)
如果要在tabcontrol上为特定选项卡添加代码,最方便的方法是在TabCtl_Change
事件中编写代码。更改选项卡控件时会发生这种情况。 E.g:
Private Sub MyTabCtl_Change()
If MyTabCtl.Pages(MyTabCtl.Value).Name = "Tab2" Then 'The tab control just changed to your page
'Requery that list box
End If
End Sub
请注意,如果您根本不使用制表符控件,但导航控件(听起来很像,制表符控件不一定要有子表单,并且不要使用有Form_Load
个事件,表格有)