问题标签 [windowsformshost]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2206 浏览

wpf - 从 WindowsFormsHost 打开时,上下文菜单不响应按键

当焦点位于 WindowsFormsHost 并且上下文菜单打开时,上下文菜单不会响应向上/向下箭头键的按下。

下面的(几乎是自包含的)代码说明了这个问题:

和后面的代码:

这将显示两个文本框,一个 WPF 和一个 WinForms。如果您按 Ctrl-T,则会出现一个简单的上下文菜单。

现在运行程序

  1. 将光标放在 WPF 文本框中
  2. 按 Ctrl-T:出现上下文菜单
  3. 按向下箭头:选择上下文菜单中的第一项 ('aaa')。

然而

  1. 将光标放在 WinForms 文本框中
  2. 按 Ctrl-T:出现上下文菜单
  3. 按向下箭头:没有任何反应

在我们的应用程序中,键盘导航是必不可少的,所以这很烦人。

谁能帮我解释一下?最好想出一个解决方案,让第二种情况像第一种一样工作。

(我注意到,普通菜单 - 至少使用助记符打开 - 工作正常)。

更新

我想,我应该详细说明一下我正在研究的真实案例:我有一个 TabControl,其中每个 TabItem 的内容都是在其他地方开发的(但通常很复杂)。我的 Ctrl-T 上下文菜单将显示选项卡项标题列表,以便在选项卡之间快速导航。(它模仿 Visual Studio 中选项卡右侧的组合框)。

现在,当当前选项卡的内容是 WPF 控件并且焦点在控件内时,一切正常。如果您打开上下文菜单并选择相同的选项卡,焦点将返回到上下文菜单打开之前的位置。这是有效的,因为上下文菜单是一个焦点范围,所以逻辑焦点保持在控件内的位置。

但是,如果内容是 WindowsFormHost,并且焦点在其中,则上下文菜单不会像上面解释的那样工作。下面的第一个答案通过在打开上下文菜单之前将焦点移动到任何 WPF 控件来解决此问题。不幸的是,这也改变了逻辑焦点,使得在上下文菜单关闭后无法重置它。

我曾尝试在更改焦点和打开上下文菜单之前捕获并保存焦点,但没有成功。

我已经解决的解决方案是仅在必要时改变焦点。(检查Keyboard.FocusedElement == null似乎工作)。这意味着我的解决方案仅在您将焦点放在 WinForms 组件中、打开上下文菜单并选择不更改选项卡的情况下是次优的。这很少见,所以它比我的第一个问题有了很大的改进。

但我仍然很好奇是否存在更好的解决方案。

0 投票
1 回答
507 浏览

wpf - WindowsFormsHost白色第一次

我有一个 WPF 窗口,它基本上占据了它的整个空间:

我第一次ShowDialog()打开这个窗口时,窗口显示为空白: 在此处输入图像描述

第二次它应该出现:

在此处输入图像描述

请,有人可以帮助第一次正确地渲染窗口吗?

此窗口类的构造函数:

调用时很简单:

0 投票
0 回答
11656 浏览

c# - 无法绑定到目标方法,因为它的签名或安全透明度与委托类型的不兼容

除了安装 Visual Studio 2012 外,我们现有的应用程序现在在尝试创建委托时崩溃。

为什么在运行我们的应用程序时会出现此错误(未在调试中运行...只是正常运行 .exe...没有重新编译,或者除了安装 Visual Studio 2012 之外的任何其他操作)?

Visual Studio 2012 是否以某种方式更新 .net 4.0 WindowsFormsIntegration?

关于如何解决这个问题的任何建议?

'对匹配指定绑定约束的'MyWindowsFormsHost'类型的构造函数的调用引发了异常。

内部例外:

无法绑定到目标方法,因为它的签名或安全透明度与委托类型的不兼容

违规的班级和线路:

更新:发现 NotifyActiveApp 方法不再存在于 WindowsFormsHost 上。我不明白的是使用 Visual Studio 2012 安装 .net 4.5 如何影响我现有的 4.0 应用程序。

更新:为了解决这个问题,我使用反射来检查 NotifyActivateApp 方法是否存在。(如果它不存在,那么该应用程序正在修补的 .net 版本中运行……我不必担心编写此子焦点代码来修复的激活错误)。

微软注意:感谢您修复您的错误...我只是希望您能够以一种不会破坏现有代码的方式推出它。

0 投票
0 回答
479 浏览

c# - WindowsFormsHost ToolTipService

我遇到的问题的简单案例代码:


该按钮将切换传递给 SetIsEnabled 的值。当为 false 时,托管在 windows 窗体主机控件中的东西将被禁用。

似乎无法为这种行为找到任何解释。

0 投票
1 回答
1452 浏览

c# - 使用 WindowsFormsHost WPF 在 StoryBoard 之后强制重绘

我正在寻找一种方法来强制 WindowsFormsHost 控件在动画完成移动后重新绘制自身,但我没有找到解决方案。

我按照http://bitsbobsetc.wordpress.com/2011/07/10/creating-a-sliding-panel-in-wpf/在我的 WPF 应用程序中有一个滑动面板的示例

在示例中,他仅使用基本的 wpf 控件。在我的滑动面板中,它的主要部分是 WindowsFormsHost。我遇到的问题是动画按原样发生,但 WindowsFormsHost 直到用户与其他东西交互后才会被绘制。就像刷新主窗口使其可见。

当滑动面板被隐藏时也会发生同样的事情。WindowsFormsHost 仍然显示并且可以交互,直到用户与其他东西交互。

Animating WindowsFormsHost看来这是一个已知问题,但我并不太关心动画,只是显示和隐藏面板。

下面是一些有助于描述当前行为的图像。

侧面板关闭 SidePanelOpenNotDrawn 侧面板打开并绘制 侧面板关闭但仍然绘制

0 投票
2 回答
943 浏览

wpf - 在托管 Winforms 控件中出现异常后在 WPF 应用程序中继续执行

我有一个 WPF 应用程序,它有一个 WindowsFormsHost,其中托管了第 3 方 WinForms 控件。有时,由于第 3 方 WinForms 控件中的错误,我得到一个NullReferenceException.

虽然我已经设置了一个DispatcherUnhandledException处理程序,但我无法在那里捕获异常并继续执行。

只有在AppDomain.CurrentDomain.UnhandledException处理程序中我才能“捕捉”它,但从那时起我不能做太多事情,应用程序就会退出。

然后我发现了一个 stackoverflow 问题 (有一个答案;现在找不到),它说要尝试这样做:

这也无济于事,因为(内联)处理程序从未被调用过。

走错路了吗?

0 投票
0 回答
441 浏览

wpf - WindowsFormsHost 导致 System.Windows.Forms.Button.Click 事件不触发

我正在将 Windows 窗体应用程序转换为 WPF,并在转换的第一部分重新使用一些 winform 控件。

为了托管 winform 控件,我使用的是 WindowsFormsHost,并且似乎正在发生的事情是 enter 按键不会导致在 winforms 按钮上触发 Button.Click 事件(但是,用鼠标和空格键单击仍然有效)。

您可以通过执行以下操作重现此行为:

我正在考虑向 WindowsFormsHost 添加一个事件处理程序来调用 Button.PerformClick 如果按下了输入并且按钮被聚焦,但我觉得一定有一些我忽略了为什么输入不会导致按钮点击发生.

0 投票
1 回答
1221 浏览

c# - 如何使 WindowsFormsHost 透明?

System.Windows.Forms.Integration.WindowsFormsHost在我的 WPF 应用程序中使用。这System.Windows.Forms.Integration.WindowsFormsHostPanel控件的父级,我正在渲染它Panel以显示来自网络摄像头的实时摄像头图像。

如何使其透明,以使最终用户无法在用户界面上看到网络摄像头?

0 投票
1 回答
412 浏览

.net - WindowsFormsHost 控件中的 Telerik RadPanorama 控件

我正在构建我工作的 WPF 应用程序,并且我想将 RadPanorama 用于开始屏幕或将“启动板”用于应用程序。我了解并看到了许多线程,WPF 没有 RadPanorama。

但是,有什么原因我不能在 WindowsFormsHost 中嵌入一个?

经过非常快速的小测试后似乎可以工作,但我想知道是否有人对这样做有任何反馈?如果没有设计时支持,有些事情会变得非常“混乱”。有办法解决吗?

0 投票
1 回答
2277 浏览

c# - WPF:什么时候真正加载、呈现和完全准备好 TabItem?

在我的 WPF 应用程序中,我有一个类用作 QuickTime 的包装器。它提供了我需要的所有特定或简化的功能。为了运行,它需要创建一个 QuickTime 的 ActiveX 控件的实例并将其放置在一个有效的 Windows 窗体窗口中。我的应用程序是 WPF,构造函数的工作方式如下:

现在在主窗口中,我像这样使用播放器:

这一直有效,直到我将 WindowsFormsHost 放入 TabControl 中。我想把它放在一个从一开始就没有显示的选项卡上。

这导致了一个奇怪的行为:我的VideoPlayerQT对象的构造函数试图将AxQTControl提供WindowsFormsHost的 .hwever 放在一个尚未显示的选项卡上,QuickTime 控件会抛出InvalidActiveXStateException. 我认为任何 ActiveX / COM 控件都会抛出它;我猜在WindowsFormsHost单击并显示其父选项卡之前,它处于某种“无效的 ActiveX 状态”。

我的问题是:应该在哪个事件处理程序(在哪个对象上)构建播放器?最初处于非活动状态的 TabItem 内的 WindowsFormsHost 何时准备好并加载,就像 Window_Loaded 触发时一样?