我有一个现有的 VB6 应用程序,我正在慢慢地将其代码移动到 DotNet,在很多情况下,这意味着必须使用 DotNet 用户控件并使用 Interop Forms Toolkit v2 将它们托管在 VB6 表单中。
目前的做法是用C#开发用户控件,然后有一个继承C#版本的VB.NET用户控件,并以VB6形式承载VB.NET控件。
我唯一遇到困难的部分是当下一个获得焦点的控件位于 Dotnet 用户控件之外时, try catch 文本框中的 Leave 或 Validated 事件。事件根本不会触发,或者我的处理程序不会运行。
有人解决了这个问题还是我遗漏了什么?
最佳答案
首先要注意的是,您绝对不必将 VB.NET 与 Interop Forms Toolkit 一起使用,您可以直接使用 C# 代码。
查看这两篇 CodeProject 文章:
在第二篇文章中,有一个名为 ActiveXControlHelpers 的类,如果您查看其中,您将看到如何连接 UserControl 以使事件在 VB 6.0 之间顺利地传输到 .NET。例如,如果您通过 Tab 键切换到 VB 6.0 中的 .NET 控件,那么您希望通过 Tab 键切换该控件的所有组件,而不是切换到 VB 6.0 世界中的下一个控件。
我非常确定,如果您看看如何完成此操作,您应该能够在解决问题上取得一些进展。
关于.net - Iterop Forms Toolkit 验证和焦点事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1485390/