问题标签 [winforms-interop]

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 投票
0 回答
5490 浏览

wpf - 设置 Wpf 窗口样式时,WindowsFormsHost 不显示

我有一个 WPF 窗口,里面有一个 WinForms 按钮。当我设置窗口的样式时,不会呈现按钮,但是当未设置窗口样式时,按钮会按原样显示。

窗口 Xaml:

这是窗口的样式:

我有其他具有相同样式的窗口,但只有 WPF 控件(一些具有默认样式,一些具有自定义样式)并且没有问题。

我试过启用视觉样式但没有运气..

在此先感谢您的帮助...

0 投票
1 回答
1020 浏览

wpf - Winform中嵌入的WPF控件导致应用程序崩溃

我正在开发一个 Outlook 插件,我们正在使用嵌入在使用 ElementHost 的 Windows 表单中的 WPF 用户控件。

此应用程序仅在几台机器上间歇性崩溃。分析崩溃转储后,WPF 渲染线程似乎导致了此崩溃。windbg 中的堆栈跟踪看起来像

0 投票
1 回答
2118 浏览

c# - 如何使 WinForms 表单在 AvalonDock 中作为 DockableContent 工作?

我可以使用 WinForms 控件,但不能使用整个表单:

是否可以使用整个表格?我想利用应用程序中的现有表单。

0 投票
3 回答
7679 浏览

c# - WPF/WinForms/GDI 互操作:将 WriteableBitmap 转换为 System.Drawing.Image?

如何将 WPF WriteableBitmap 对象转换为 System.Drawing.Image?

我的 WPF 客户端应用程序将位图数据发送到 Web 服务,并且 Web 服务需要在该端构造一个 System.Drawing.Image。

我知道我可以获取 WriteableBitmap 的数据,将信息发送到 Web 服务:

但是在 Web 服务端,我不知道如何根据这些数据创建 System.Drawing.Image。

0 投票
2 回答
2381 浏览

c# - 使用 PInvoke 显示表单

我有以下场景:WinForms 应用程序只允许运行此应用程序的一个实例(此处使用互斥锁进行检查)。以一些参数开始的应用程序正在运行但被隐藏。当有人再次点击应用程序时,Mutex 将检测到该应用程序已经在运行,并通过调用本机方法“取消隐藏”主窗体(参见下面的方法BringWindowToFront)。

这是查找和显示表单窗口的代码:

一切都很好,但我还需要一个功能。当主表单第一次取消隐藏时,我想显示另一个附加表单。通常我是通过表单_Shown事件来完成的。但是当我使用 PInvoke 方法来显示窗口时,这个事件不会被触发。

所以基本上我想在显示主窗体时显示附加窗体(使用 ShowWindow PInvoke 方法)

这可能吗?还有其他想法如何实现吗?

0 投票
1 回答
210 浏览

vb.net - 我可以从完整的 .Net 框架调用非托管 Mobile CE Dll(在桌面上运行)

我有一个为 Windows Ce 编译的非托管库。我正在尝试从 VB.net Full Framework .Net 4 Client Profile Windows 应用程序中调用此 dll。我正在尝试使用我在 Compact Framework 应用程序中使用的相同代码。它编译时没有错误并运行,但是在调用函数时出现错误 ex = {“尝试加载格式不正确的程序。(HRESULT 异常:0x8007000B)”} 是否可以使用 Mobile Unmanaged Dll on桌面?这是我用来调用 Dll 的包装器代码:

0 投票
3 回答
1111 浏览

wpf - Winforms 上的 WPF 菜单

是否可以在 WinForms 上显示 WPF 上下文菜单?

如果是,我们怎么能这样做?

0 投票
2 回答
2260 浏览

.net - WinForms 到 WPF - 我们如何从这里到达那里?

有没有一种实用的方法可以让我们慢慢地将 WinForms 应用程序发展为 WPF,而不会为我们自己制造奇怪的互操作场景的支持噩梦?

背景资料:

我们有一个大型战舰灰色 WinForms 应用程序,被大约 60-75 个用户的内部组大量使用。我们开始遇到一些地方,我们可以从 WPF 中的应用程序中看到一些好处,但这还不足以证明一个大型项目完全重写它是合理的。应用程序中的所有屏幕都是独立的 WinForms 用户控件,而 WinForms 应用程序只是一个处理菜单、打开/关闭表单、提供一些共享帮助方法等的外壳......

到目前为止,我们的最佳想法是将 shell 应用程序转换为 WPF,然后在其中托管 WinForms 用户控件。我们认为,随着时间的推移,我们可以转换用户控件,将这些更改与具有足够业务价值以支持额外工作的计划联系起来。我担心互操作的工作情况以及它将如何影响性能。我还担心我们如何过渡到应用程序的新外观。让 shell 应用程序看起来很时髦,然后在其中托管旧的战舰灰色用户控件似乎很奇怪,在 WPF 中创建 shell 应用程序并让它看起来就像在 WinForms 中一样似乎也很奇怪。

如果 Caliburn、Prism 或其他类似框架中的一个可以简化过渡,我们也愿意探索这些选项。

0 投票
1 回答
2968 浏览

c# - WPF windows窗体主机键盘事件

这可能是一个简单的问题,但我一直无法找到一个快速的答案。

我有一个WPF应用程序,它有一个托管 GeckoFX 组件的Windows 窗体控件(并不重要)。

我想要做的是捕获 Windows 窗体控件中的按键事件,并为某些特定的组合键获取 WPF 控件的焦点。如果我想从整个 WPF 应用程序窗口(甚至在 Windows 窗体控件内部)捕获事件怎么办?我尝试处理 KeyDown 事件和 PreviewKeyDown 事件,但无济于事。

我想知道的是这是否可能以及应该如何完成。如果需要,我可以发布一些代码。

0 投票
1 回答
1799 浏览

wpf - WPF WindowsFormsHost 不会冒泡未经处理的按键手势

好的,我不确定我是否理解这应该如何工作,但在我的应用程序中,我已将按键手势 (Ctrl+K) 绑定到 RoutedCommand。无论我在我的应用程序中关注的哪个位置,组合键都有效,除非我在包含 Web 浏览器控件的 WindowsFormsHost 中使用它。我尝试为 Web 浏览器控件捕获 PreviewKeyDown 事件并将 IsInputKey 设置为 false。理论上,这应该会导致主机认为未处理的关键手势并将其向上发送,但这不会发生。

更新:

如果我覆盖控件的 bool IsInputKey (Keys keyData) 并返回 false,它会起作用并且命令会按应有的方式执行。

也许我处理 PreviewKeyDown 的方式有问题?

我希望这可以让我从主窗口捕获任何组合键。我宁愿通过事件处理来解决这个问题,而不是扩展控件......