我是(最终!)将我们的VB6应用程序转换为.NET(C#)的过程。我想使用Winforms(我希望在那之后快速切换到MVC并使它们成为Web应用程序)。我们最近在Server 2012的VB6应用程序中出现了一些严重的奇怪问题,我怀疑这可能是MSCOMCTL.OCX引起的(实际上是提示重写)。我对这个OCX了解得越多,我越想远离它。我不知道如何找出.NET Winforms框架是否使用这些旧的ActiveX组件。我希望有人知道或可以指出我的发现方向。我想避免WPF的混乱学习曲线。.NET Winforms控件使用MSCOMCTL.OCX吗?
回答
编号
OCX扩展名表示ActiveX控件。它们确实被传统的基于COM的VB系统(最新的,最大的版本是VB 6)所使用,但它们并未被.NET Framework使用。 WinForms提供了它自己无关的通用控件的实现。相反,你会有一整套新的错误来应对!
请注意,you can use ActiveX controls with WinForms,如果您尝试使用某种自动转换向导将VB 6项目转换为.NET项目,这可能是您最终无意中做了什么。我不确定,这取决于你的向导的质量。通常,没有理由永远使用MSCOMCTL.OCX,因为所有常用控件都是由WinForms提供的,但是如果您的应用程序依赖于其他没有等效功能的ActiveX控件,转换向导很可能会尝试并重用它们。我不知道你在Server 2012的MSCOMCTL.OCX上遇到了什么问题,不应该有什么重大的问题,VB 6的应用程序可以继续在较新版本的Windows上运行,确保你是从cumulative update rollup运行该文件的最新版本。对一个简单的bug进行大规模重写似乎对我来说过分了。)
MSCOMCTL.OCX已经陷入了安全问题,并且有许多KillBits(注册表项迫使ocx控件不能被加载,或者为另一个新的控件“建议”另一个guid)。如果您的程序中引用了ocx的不同版本(出于某种原因,在vb6表单中引用了ocx),它实际上会将一些依赖dll的2个实例加载到您的应用程序内存中。请注意,您无法关闭此实例中的ocx更新。 Visual Studio会忽略该设置,这使得使用相同版本的OCX保留所有文件非常困难。 – Belmiris
'错误'是在随机的时间间隔 - 几小时或几天 - 突然我们的vb6应用程序名称实际上在任务管理器中是“空白的”。这实际上导致一些API调用崩溃(Process32Next)。与此同时,我们与我们的访问数据库的连接已经损坏(对于RDP上的所有用户!)。我们扫描了数十次病毒,创建了全新的服务器安装,但没有任何工作,直到我经历并将每个vbp和frm文件引用MSCOMCTL.OCX更改为2.0并重新编译该应用程序。这个问题几个星期没有发生。 – Belmiris
这对我来说“闻起来就像一个记忆腐败问题,与某种共享资源结合在一起造成一个真正的混乱。 – Belmiris
- 1. 在Clarion NET中使用devExpress WinForms控件
- 2. 用于.net(winforms)的light richtextbox控件
- 3. .NET WinForms类似QuickWatch的控件?
- 4. NET WinForms控件数据绑定亲子
- 5. .NET winforms的Ajax类型控件
- 6. WinForms .NET 2.0+的标签云控件
- 7. WatiN和.net winforms WebBrowser控件 - 是否可以使用DialogWatcher?
- 8. 使用Winforms控制内部控件
- 9. .net WinForms控件验证 - 如何显式验证所有控件
- 10. 可以从WPF使用非可视的WinForms控件吗?
- 11. 这是一个控件吗? (C#Winforms)
- 12. 在C++/CLI(WinForms)应用程序中使用C#WinForms控件
- 13. 在winforms中使用控件(linklabels,treeview)
- 14. 本书学习Winforms控件
- 15. Unclipped Winforms用户控件?
- 16. WinForms用户控件设计
- 17. 如何禁用.net Winforms控件而不更改其外观?
- 18. 用自定义类.NET取代现有的控件Winforms
- 19. 的WinForms用户控件继承在.NET Compact Framework受
- 20. WinForms中的WPF控件
- 21. 是可以使用样式对.NET的WinForms控制?
- 22. winforms控件大小限制
- 23. 未在Excel 2016/Windows10下安装ListView公共控件(mscomctl.ocx)
- 24. C#WinForms ErrorProvider控件
- 25. WinForms控件的ObservableCollection
- 26. 空间winforms控件
- 27. .NET单击事件(WinForms)
- 28. 我可以在Delphi XE下使用.Net控件而不是ActiveX控件吗?
- 29. 如何在Internet Explorer中嵌入winforms控件时使用.Net本地化框架
- 30. KeyDown事件不能用.NET WinForms触发?
默认情况下,它们不会(尽管*如果需要可以使用ActiveX控件) 。 –
这并不回答你的问题,只是我的看法,但是...如果是我,我会继续前进,并将功能移到MVC WebAPI服务(或者更好的是自托管的WCF),然后它不管你指向哪个前端。它可以是WinForms,WPF,网页或任何组合。 – Kevin
所以我会凯文,但它不是我的电话=(。谢谢马修。 – Belmiris