我有一个现有的VB6应用程序,我正在慢慢将其代码移动到DotNet,在很多情况下,这意味着必须使用DotNet用户控件并使用Interop Forms Toolkit v2以VB6格式托管它们。
目前,当前的方法是在C#中开发用户控件,然后有一个VB.NET用户控件,它继承自C#版本并以VB6格式托管VB.NET控件。
我正在努力的唯一部分是当下一个获得焦点的控件在Dotnet用户控件之外时,尝试捕获文本框上的Leave或Validated事件。事件根本不会触发,或者我的处理程序无法运行。
有没有人解决过这个问题,或者我错过了什么?
答案 0 :(得分:3)
首先要注意的是,您绝对不必将VB.NET与Interop Forms Toolkit一起使用,您可以直接使用您的C#代码。
查看这两个CodeProject文章:
在第二篇文章中有一个名为 ActiveXControlHelpers 的类,如果你看一下,你会看到如何连接你的UserControl以使事件在VB 6.0到.NET之间流动。例如Tabing,如果你在VB 6.0中选择了.NET控件,那么你想要选中该控件的所有组件,而不到VB 6.0世界的下一个控件。
我很确定如果你看看这是怎么做的,你应该能够在你的问题上取得一些进展。