从 C# 模态表单显示 VB6 模态表单时,事件不会触发?

2024-01-29

EDIT- 我发现当VB6程序编译运行时,事件工作正常,没有问题。

只有当代码在 VB6 IDE 中运行时,事件才会被破坏!

这并不能完全解决问题,因为如果我们不能在IDE中调试的话,开发效率会非常低;但也许它可以让我们更深入地了解根本原因。我猜想需要的修复(如果可能)是让事件在 IDE 中正常/正确工作。


我正在从模式 C# Winform 加载模式 VB6 表单,在两个环境之间使用 COM 互操作。在此配置中(模态到模态)VB6 表单中不会触发任何事件- 例如,。甚至不Form_Load.

如果表单以非模式方式加载,那么一切都会正常工作,但这当然不能很好地满足 UI 要求。

如果可能的话,我想了解这个问题的根本原因,以及是否可以对此采取措施。我在这里包含了我能想到的问题的最基本的再现。

该体系结构是一个协调对象从 VB6 传递到 C# 代码,该代码充当显示 VB6 表单的包装器。

事件顺序:

  1. 主 VB6 程序启动
  2. VB6 创建一个 (C#)ModalCSForm对象并设置其对 a 的引用VB6Bridge object
  3. VB6调用显示ModalCSForm
  4. ModalCSForm显示
  5. 用户点击按钮ModalCSForm
  6. 按钮单击处理程序使用VB6Bridge要显示的对象ModalVB6Form
  7. ModalVB6Form显示
  8. VB6 中不会发生任何事件。 VB6 代码中不会命中断点。

C# 项目:

班级/形式ModalCSForm:

[ClassInterface(ClassInterfaceType.AutoDual)]
public partial class ModalCSForm : Form
{
    ...

    public IVB6Bridge Bridge { get; set; }

    private void button1_Click(object sender, EventArgs e) =>
        Bridge.ShowVB6FormModally();
}

界面IVB6Bridge:

[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IVB6Bridge
{
    void ShowVB6FormModally();
}

VB6项目:

主要程序:

Sub main()
    Dim m As New ModalCSForm

    Set m.Bridge = New VB6Bridge
    Call m.ShowDialog
End Sub

ModalVB6Form code:

Private Sub Form_Load()
    Label1.Caption = ""  'Doesn't occur, remains "ERASE ME"
End Sub

Class VB6Bridge:

Implements IVB6Bridge

Private Sub IVB6Bridge_ShowVB6FormModally()
    ModalVB6Form.Show FormShowConstants.vbModal
End Sub

我在下面提供了一个屏幕截图来演示该问题;显然,文本“ERASE ME”实际上并未被删除,这应该是表单加载时首先发生的事情。同样,断点Form_Load, Form_Initialize,或 VB6 表单代码中的任何其他内容都不会被命中。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 C# 模态表单显示 VB6 模态表单时,事件不会触发? 的相关文章

  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • C#动态支持吗?

    看完之后这个帖子 https stackoverflow com questions 2674906 when should one use dynamic keyword in c sharp 4 0k和链接 我还有 2 个问题 问题 1
  • 如何创建可以像 UserControl 一样编辑的 TabPage 子类?

    我想创建一个包含一些控件的 TabPage 子类 并且我想通过设计器来控制这些控件的布局和属性 但是 如果我在设计器中打开子类 我将无法像在 UserControl 上那样定位它们 我不想创建一个带有 UserControl 实例的 Tab
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • 显示异常时的自定义错误消息:从客户端检测到潜在危险的 Request.Form 值

    我在我的 Web 应用程序中使用 ASP NET 的登录控件 当发生此异常时 我想在标签上显示一种有趣的错误类型System Web HttpRequestValidationException A potentially dangerou
  • 如何使用recv()检测客户端是否仍然连接(并且没有挂起)?

    我写了一个多客户端服务器程序C on SuSE Linux 企业服务器 12 3 x86 64 我为每个客户端使用一个线程来接收数据 我的问题是 我使用一个终端来运行服务器 并使用其他几个终端来运行服务器telnet到我的服务器 作为客户端
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • 检查算术运算中的溢出情况[重复]

    这个问题在这里已经有答案了 可能的重复 检测 C C 中整数溢出的最佳方法 https stackoverflow com questions 199333 best way to detect integer overflow in c
  • Qt 创建布局并动态添加小部件到布局

    我正在尝试在 MainWindow 类中动态创建布局 我有四个框架 它们是用网格布局对象放置的 每个框架都包含一个自定义的 ClockWidget 我希望 ClockWidget 对象在调整主窗口大小时相应地调整大小 因此我需要将它们添加到
  • 在非活动联合成员上使用“std::addressof”是否定义明确[重复]

    这个问题在这里已经有答案了 下面的代码是尝试实现constexpr的版本offsetof在 C 11 中 它可以在 gcc 7 2 0 和 clang 5 0 0 中编译 这取决于申请std addressof工会非活跃成员的成员 这是明确
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 当模板类不包含可用的成员函数时,如何在编译时验证模板参数?

    我有以下模板struct template
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 在类的所有方法之前运行一个方法

    在 C 3 或 4 中可以做到这一点吗 也许有一些反思 class Magic RunBeforeAll public void BaseMethod runs BaseMethod before being executed public
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检

随机推荐

  • 异常 java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource

    我正在尝试将 spring 和 Hibernate 与 mysql 集成 我创建了一个简单的 java 项目和一个包含 3 个类的包 一个应用程序 context xml 文件和一个用于映射的 hbm xml 但执行后 我得到这个错误 Er
  • Ruby 递归函数

    我在从递归函数返回值时遇到问题 def ask question question print question answer STDIN gets chomp ask question question if answer empty r
  • 来自 Google Play 的 SSL 警告

    收到来自 google play 的警告 我如何处理 WebViewClient onReceivedSslError 处理程序的不安全实现的 SSL 错误处理程序漏洞 请尽快解决此漏洞并增加升级后的APK的版本号 为了正确处理SSL证书验
  • Redux / RTK:为一个切片创建增强器?

    在我的 Redux RTK 存储中的一个切片中 要使该切片完成其工作 我所需要做的就是使用以下命令创建一个实体适配器createEntityAdapter https redux toolkit js org api createEntit
  • 类变量、范围解析运算符和不同版本的 PHP

    我在 codepad org 中尝试了以下代码 class test const TEST testing 123 function test testing TEST echo self testing class new test 它返
  • 如何编写自定义 POCO 串行器/解串器?

    我想为 FIX 消息编写一个自定义 NET 序列化器 反序列化器 与 XML 不同 基本上该消息的编码为
  • 使用用户名和密码登录后如何抓取网站

    我编写了一个网络爬虫 可以使用关键字抓取网站 但我想登录到我指定的网站并按关键字过滤信息 如何实现这一点 我发布了到目前为止我已经完成的代码 public class DB public Connection conn null publi
  • 如何在 React.JS 中添加 ClassName 并删除 onScroll 事件?

    我正在尝试制作一个粘性标题 可以根据他在页面上的位置更改其背景颜色 为此 我尝试将 className active 添加到我的样式组件 StyledHeader 中 当滚动位置 Y 高于 400 像素时 它将出现 低于 400 像素时消失
  • Selenium/Chrome/ChromeDriver 问题阻止 VPS 上的爬网(DevToolsActivePort 文件不存在)

    我购买了第一个 VPS 它运行 CentOS 7 64 位 在我今天开始使用这个 VPS 之前 我对 CentOS 7 的经验绝对为零 所以请对我宽容一点 当尝试使用 Scrapy 和 Selenium 抓取一些动态生成的内容时 脚本最终失
  • 重新发送 DocuSign 电子邮件

    是否有 API 端点允许我重新向收件人发送电子邮件 有时 用户可能无法收到或丢失包含签名链接的 DocuSign 电子邮件 我希望能够根据需要再次发送这些电子邮件 您可以使用 修改收件人 请求来触发向特定收件人重新发送电子邮件通知 PUT
  • Android 应用程序仅在 Eclipse 调试时因 SIGABRT Signal 6 崩溃

    我有一个应用程序可以在没有附加调试器的设备上完美运行 但是 我在Eclipse中调试时遇到了问题 当主线程挂起大约 10 秒或更长时间 例如遇到断点后 主线程会抛出 SIGABRT 显然来自 libc 我能想到的唯一解释是 主线程上的消息队
  • LINQ except 如何工作? [复制]

    这个问题在这里已经有答案了 可能的重复 LINQ 查找两个列表中的差异 https stackoverflow com questions 2404301 linq find differences in two lists 我想找到两个系
  • 抽象类设计:为什么不定义公共构造函数?

    看这里 抽象类设计 http msdn microsoft com en us library ms229047 aspx http msdn microsoft com en us library ms229047 aspx It say
  • HTML 表格,某些列自动调整,其他列固定宽度

    我正在尝试创建一个符合以下要求的表 表格宽度必须定义为 0 浏览器应根据列宽计算宽度 这是为了容纳列调整大小插件 某些列可能具有固定宽度 例如 50px 没有固定宽度的列必须自动适应内容 我创建了一个小例子 http jsfiddle ne
  • Rails:around_* 回调

    我已阅读以下文档http api rubyonrails org classes ActiveRecord Callbacks html http api rubyonrails org classes ActiveRecord Callb
  • 如何判断是否不再需要 git stash?

    是否可以判断是否已经应用了存储 因此不再需要 而无需执行git stash apply 假设我只使用一个分支 这可以通过使用来防止pop而不是apply当应用隐藏时 因此每次应用时都将其清除 但是 我有时使用 git stash 来保存正在
  • Apache:将 XAMPP/PHP 句柄从 application/x-httpd-php 更改为 application/x-httpd-php5

    我的目标是不再需要拥有 htaccess 文件的本地副本和实时副本 而是能够对本地 实时配置使用相同的单个 htaccess 文件 这将迫使我更好地理解配置服务器 我的本地服务器是我计算机上的 XAMPP 而我的实时服务器是共享 Web 主
  • Firebase jobdispatcher 未在指定窗口内触发

    我正在实施 Firebase Jobdispatcher 触发时间指定在 10 到 20 秒之间 这是我安排工作的代码 public static void scheduleCompatibleJob Context context Fir
  • QGraphicsView:禁用自动滚动

    我想要一个永远不会自动滚动的 QGraphicsView 类似 基本上 我的问题与http developer qt nokia com forums viewthread 2220 http developer qt nokia com
  • 从 C# 模态表单显示 VB6 模态表单时,事件不会触发?

    EDIT 我发现当VB6程序编译运行时 事件工作正常 没有问题 只有当代码在 VB6 IDE 中运行时 事件才会被破坏 这并不能完全解决问题 因为如果我们不能在IDE中调试的话 开发效率会非常低 但也许它可以让我们更深入地了解根本原因 我猜