从 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 模态表单时,事件不会触发? 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 异常 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中调试的话 开发效率会非常低 但也许它可以让我们更深入地了解根本原因 我猜