问题标签 [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 回答
710 浏览

c# - WPF.Implementing 从 ListBox 拖放到托管的 ActiveX 控件上

我有一个 WPF 应用程序,它托管一个(activeX)VisioDrawingControl(使用 WindowsFormsHost)我正在尝试使用从 WPF 列表框中拖动元素并拖放到 ActiveX 控件上来实现拖放行为。

如果我从 XAML 添加一个放置事件处理程序,我会收到一个异常,指出“DragDrop”事件对于此 activex 控件无效“。对于其他拖放标准事件,也会引发相同的异常。如果我尝试从 C# 代码添加它们,它们是不存在于对象的成员列表中。

我再次尝试使用鼠标事件但它不起作用,实际上如果拖动在 ActiveX 控件之外开始,则不会引发 ActiveX 控件的 MouseUp 事件。

你有一些提示吗?谢谢你

0 投票
6 回答
12585 浏览

c# - 如何将 Winform 添加到 WindowsFormsHost

我的主要项目在 WPF 下,在我的解决方案中,我有:

  1. winform 名称为 Form1
  2. wpfForm 名称为 MainWindow.xaml

我想做这项工作:如果单击按钮,我在 MainWindow 中显示 Form1 与MDI完全一样

0 投票
1 回答
185 浏览

wpf - 表单事件不会通过 NavigationService 触发

我在 WPF 页面中有 WindowsFormsHost,比如 Page1

WindowsFormsHost 有子 winform 说 Form1。

Form1 有 Paint 方法 Form1_Paint();

我正在使用 NavigationService 从 Page1 导航到 Page2。

当我使用 NavigationService.GoBack() 从 Page2 返回 Page1 时, Page1 的 Page_Loaded 事件会触发,但 Form1_Paint() 方法不会触发。

我想要通过 Back Navigation 触发 Page_Loaded() 事件时触发的 WinForm 事件。

0 投票
1 回答
1005 浏览

c# - 将主窗体转换为 WPF Windows

我有一个 Windows 窗体项目,它有一个主窗体,在这个窗体中,我以 mdi 的形式打开其他窗体(其他窗体在主窗体内打开)

我的老板告诉我将主窗体更改为 wpf 技术(添加一些动画或其他内容)

现在我想在 wpf 中有一个主窗口,它的中间有一个网格,可以将我的 winform 放在那里。

在这种情况下,做这项工作的最佳主意是什么。

0 投票
4 回答
1986 浏览

.net - 显示 PDF 获得焦点并吃掉热键

使用我在 SO 上找到的代码使用基于 COM 的 Acrobat Reader 通过托管在 WindowsFormsHost 中来显示 PDF。

它可以很好地显示 PDF。两个问题:

  • 当我加载 PDF 时,控件 AxAcroPDFLib.AxAcroPDF 成为焦点

    我希望专注于先前

  • 当 AxAcroPDFLib.AxAcroPDF 获得焦点时,它会吃掉热键 (N)

    ALT 键甚至没有在 N 下划线。即使用户选择 AxAcroPDFLib.AxAcroPDF,我也希望热键能够正常工作。

我知道这是 WPF 中的 COM 和 Adob​​e,可能没有答案。如果有免费或便宜的 WPF 控件来查看 PDF,我会很乐意走这条路。这是用于商业应用程序,因此必须免费(或便宜)用于商业用途。

这确实显示 PDF。在生产应用程序中,我根据使用的操作显示各种 PDF。

0 投票
2 回答
3436 浏览

wpf - WindowsFormsHost 将注意力集中在激活应用程序上,甚至通过应用程序的其他 wpf 表单激活

重现我的案例(.net 4.0)

  1. 创建 WPF 应用程序 (MainWindow.xaml)
  2. 添加包含文本框的 Winform 用户控件 (UserConrol1.cs - Winform)
  3. 使用 windowsformshost 将 UserControl1 放入 MainWindow.xaml
  4. 将另一个包含文本框 (wpf) 的 WPF 窗口添加到项目 (Window1.xaml)
  5. 在 MainWindow InitializeComponent 之后创建并显示 Window1

您的项目已准备就绪,

  1. 运行项目并在 MainWindow.xaml 中设置文本框(在 WindowsFormsHost 中)
  2. 通过打开一个窗口(Windows 文件资源管理器、记事本、winamp 等)停用您的应用程序
  3. 尝试通过用鼠标单击文本框在 Window1 窗口中的文本框中写入

而且您会看到您无法在 Window1 中的文本框上设置焦点,因为 MainWindow Texbox(在 winformshost 中会窃取您对激活的应用程序的关注)

任何的想法?

主窗口.xaml

主窗口.xaml.cs

Window1.xaml

Window1.xaml.cs

0 投票
3 回答
2780 浏览

.net - 不使用 WindowsFormsHost 在 WPF 中查看 PDF

是否有任何用于显示 PDF 的本机 WPF 控件?我正在编写一个程序,它将加载一个 PDF 文件,然后在其上显示额外的符号。

使用 WindowsFormsHost (http://hugeonion.com/2009/04/06/displaying-a-pdf-file-within-a-wpf-application/) 将不起作用,因为 WindowsFormsHost 控件始终显示在所有其他控件之上窗口中的 WPF 控件。这将不允许在 PDF 上看到我的符号。

将 PDF 转换为具有我需要的缩放细节级别的光栅图像会创建一个太大的文件。

WebBrowser 控件不允许以编程方式更改或缩放页面。我也无法删除 Adob​​e 工具栏。

我使用的任何第三方库都必须是免费的(就像啤酒一样)。

0 投票
2 回答
1785 浏览

wpf - WPF Windows窗体主机中的ActiveX控件在变得可见后不显示

我有一个 wpf 用户控件,其中包含一个位于 windowsformhost 中的 activex 控件。我正在使用一个 MVVM 模式,它说 ViewModel1 被映射到纯 WPF 视图,而 ViewModel2 被映射到 wpf 内容和上面的用户控件

如果 ViewModel2 是“隐藏”,然后变为可见,则其中的 Activex 控件不会显示(具体来说,我说的是 VLC Activex 控件)。

我已经使用按钮和用户控件在非 MVVM 模式中进行了测试。用户控件是隐藏的,直到您按下按钮并且发生同样的事情,但是如果我在用户控件中创建一个方法以将 activex 控件重新附加到 windowsformhost,那么它会重新出现。如果我从视图模型中调用此方法,那么它仍然是空白的。有谁知道我怎样才能让它再次显示?

编辑 - 我刚刚发现这是因为我的 wpf 应用程序具有透明度。似乎不可能在启用 windowsformshost 和透明度的情况下做我想做的事。

0 投票
2 回答
1562 浏览

wpf - 在 WPF WindowsFormsHost 中滚动 WinForms DataGridView

我有 Scrollviewer,其中包含一个带有 WindowsFormsHost 的框架。WindowsFormsHost 包含一个 DataGridView(请不要问我为什么不使用 WPF DataGrid 控件执行此操作)。

因为 DataGridView 在使用 scrollviewer 滚动时会导致显示错误,所以我禁用了 scrollviewer 并在我的 DataGridView 上启用了滚动。

这似乎有效。只要我不调整窗口大小。当我调整窗口大小时(这将导致所有子元素调整大小,包括滚动查看器、框架和 WindowsFormsHost),我的 DataGridView 的滚动条消失了,我不再能够滚动我的网格。我可以调整到窗口的旧大小,但滚动条仍然隐藏。

知道为什么会发生这种情况以及如何解决吗?我也不确定它们为什么会消失,因为我只调整了一个像素的大小并且会发生这种情况。

0 投票
1 回答
642 浏览

.net - WindowsFormsHost 控件 - 异常处理

我有一个 WPF 窗口,它需要几个 WindowsFormHost 控件。我注意到,如果我像这样对控件进行建模,那么异常不会浮出水面并且会被静默处理,即仅使用 SharpDevelop 的调试选项“处理异常时暂停”才可见。

我怎样才能避免这种行为?

我已经通过在 Window 的 Loaded Event Handler 代码中抛出异常来测试这一点。如果我注释掉其中一个 WindowsFormsHost 控件,则异常处理正常并且代码中断,但如果如下面的代码所示,则显示窗口,就好像捕获了异常一样。