【问题标题】:The TAB doesn't go into the ActiveX control embedded on my win formTAB 没有进入我的 win 表单中嵌入的 ActiveX 控件
【发布时间】:2019-06-12 18:08:39
【问题描述】:

我的同事在 Linux 下创建了一个 Qt 小部件,他将其封装到一个 ActiveX 控件中,这样我就可以在我的 Win 应用程序 UI 中使用它。我在我的 Visual Studio 工具箱中注册并添加了该 ActiveX 控件,并添加到我的 win 表单中。

一切都很好,但是当启动我的表单并单击 TAB 时,它会将焦点传递给 ActiveX 控件,然后传递给 win 表单上的其他控件,但是 TAB 不会进入 ActiveX 控件以在ActiveX 控件,它本身由一些其他控件组成。

如何使制表位在 ActiveX 控件中发生,这样我也可以在 ActiveX 控件中从一个控件切换到另一个控件?有什么已知的方法吗?

【问题讨论】:

  • 击键发生的事情是在 AxHost 包装器和控件之间协商的。你需要看看控件的 IOleInPlaceActiveObject::TranslateAccelerator() 实现函数是做什么的,大概它说“你所有的基地都属于我们”,不管键是什么。

标签: c# winforms com activex


【解决方案1】:

如果您不希望通过按 TAB 来影响表单上的按钮或某些元素,只需将 this.MyButton.TabStop = false; 添加到该特定表单的设计器即可。它所做的只是禁用(在本例中为“MyButton”)通过按 TAB 来选择。 我希望这能解决您的问题。

【讨论】:

  • 克里斯托夫,我猜你没有得到我的问题。 ActiveX 控件位于我的 WinForm 上。我只需要 TAB 在 ActiveX 控件中工作,因为该 ActiveX 控件中还有其他 UI 控件。
  • 您是否确保您的 ActiveX 控件中的控件将 this.MyButton.TabStop 设置为 true
  • 这是一个封装在 ActiveX 控件中的 Qt 小部件,可在 Windows 下使用。 TAB 在 Linux 下完美运行,遍历小部件中的所有控件。
  • 您是否希望 TAB选择您的 ActiveC 控件的控件?
  • 理想情况下,在窗体上和在 ActiveX 控件上。
猜你喜欢
  • 1970-01-01
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
相关资源
最近更新 更多