代码之家  ›  专栏  ›  技术社区  ›  Curtis Inderwiesche

可以从控件中移除焦点以在VBA中修改其属性吗?

  •  2
  • Curtis Inderwiesche  · 技术社区  · 14 年前

    For Each ctl In Me.MySubform.Controls
        ctl.Visible = False
    Next ctl
    

    稍后,我返回并使用标题和控件源名称数组绑定要用于当前字段列表的控件。

    For i = 0 To UBound(MyArray) Step 2
        Me.MySubform.Controls(i).ControlSource = MyArray(i)
        Me.MySubform.Controls(i + 1).Caption = MyArray(i + 1)
        Me.MySubform.Controls(i).Visible = True
        Me.MySubform.Controls(i + 1).Visible = True
    Next i
    

    我遇到的问题是,如果用户单击了其中一个提供焦点的字段,我似乎会将“控件可见”属性设置为false,或者在下次刷新事件期间将该字段重新绑定到另一个字段。

    我认为通过移除控制焦点,我将能够实现这一点;然而,我有两个顾虑。

    1. 这在VBA(MS Access 2003)中是否可行?如果是,怎么办?
    2. 在这种环境下,有没有更好更理想的方法来实现这一点?如果是,有哪些选项可用,在选择解决方案时需要考虑哪些因素?

    谢谢,

    1 回复  |  直到 10 年前
        1
  •  5
  •   Fionnuala    14 年前

    不能更改具有焦点的控件的可见属性。这就是问题所在吗?如果是这样的话,可以使用SetFocus保持一个小控件来接收焦点: http://msdn.microsoft.com/en-us/library/aa205181(office.10).aspx