【问题标题】:Moving focus out of TextBox将焦点移出 TextBox
【发布时间】:2018-09-02 13:16:04
【问题描述】:

ActiveX TextBox 在右键菜单中提供Edit 命令,您可以选择直接在TextBox 中进入编辑模式类型。您可以随时按 Esc 返回正常模式。第一个动作(进入编辑模式)的 VBA 等效项是:

ActivePresentation.Slides(1).Shapes("TextBox21").OLEFormat.DoVerb

但我无法找到第二个动作的等效项,即返回正常模式。有人知道吗?

注意问题并非特定于 PowerPoint,因此我添加了 excel 标签以吸引更多专家。

【问题讨论】:

  • 把重点放在别的东西上。 “某事”总是有焦点。
  • 是的。我想将焦点移到父幻灯片上,但似乎没有任何方法可以做到这一点。 Slide.Select() 没有成功。
  • 可能是 Selection.Verb Verb:=xlPrimary 之类的东西? ...查看DoVerb MethodVerb Property,还有AutoActivate PropertyVerb VB

标签: excel vba vsto powerpoint activex


【解决方案1】:

我没有找到任何返回正常模式的内置方法。我最后做的是使用SendKeys.Send("{Esc}")。这成功地将 TextBox 恢复到正常模式。但是,这种方法确实有一些注意事项。首先,如果当前焦点不在幻灯片中(例如,您正在使用功能区,或者打开了一个对话框),Esc 可能会产生不需要的效果(例如取消对话框)并且不会带来 TextBox到正常状态。其次,如果您按下 Ctrl + Shift 键,发送 Esc 将打开 Windows 开始菜单。

除非有这些麻烦,该方法本身在我的情况下可以正常工作。希望这对其他人有帮助。

【讨论】:

    【解决方案2】:

    我可能不完全了解您的情况,但以下内容对我有用。 Select 方法将选择幻灯片上的任何形状,即使焦点位于 ActiveX 控件中。然后,如果您确实希望选择 ActiveX 控件(但不是处于编辑模式),请再次选择它。

    Dim p as Presentation
    Dim s as Slide
    Dim shp as Shape
    
    Set p = ActivePresentation
    Set s = p.Slides(1)
    Set shp1 = s.Shapes(1)
    Set shp2 = s.Shapes("TextBox3")
    shp2.OLEFormat.DoVerb
    shp2.OLEFormat.Object.Text = "test"
    shp1.Select 'transitory
    shp2.Select
    

    【讨论】:

    • 谢谢 Cindy,但我的幻灯片上没有其他内容。
    • @dotNet 在上面放一个小Shape,没有轮廓,没有背景等?
    • 这看起来像是一个解决方案但是可惜,选择另一个对象不会使 TextBox 退出编辑模式。
    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    相关资源
    最近更新 更多