2

我有一个现有的 VB6 应用程序,我正在慢慢将其代码移至 DotNet,在很多情况下,这意味着必须使用 DotNet 用户控件并使用 Interop Forms Toolkit v2 将它们托管在 VB6 表单中。

目前的方法是用C#开发用户控件,然后拥有一个继承自C#版本的VB.NET用户控件,并以VB6形式承载VB.NET控件。

我唯一苦苦挣扎的部分是当下一个获得焦点的控件位于 Dotnet 用户控件之外时,尝试在文本框中捕获 Leave 或 Validated 事件。事件根本不会触发,或者我的处理程序不会运行。

有没有人解决了这个问题或者我错过了什么?

4

1 回答 1

3

首先要注意的是,您绝对不必将 VB.NET 与 Interop Forms Toolkit 一起使用,您可以直接使用您的 C# 代码。

查看这两篇 CodeProject 文章:

在第二篇文章中有一个名为ActiveXControlHelpers的类,如果您查看那里,您将看到如何连接您的 UserControl 以使事件在 VB 6.0 到 .NET 之间流动。例如,如果您在 VB 6.0 中选择 .NET 控件,那么您希望通过该控件的所有组件而不是VB 6.0 世界中的下一个控件来选择。

我很确定,如果你看看它是如何完成的,你应该能够在你的问题上取得一些进展。

于 2009-09-28T09:20:28.647 回答