【问题标题】:Windows Form C# cannot find AXWMPlibWindows 窗体 C# 找不到 AXWMPlib
【发布时间】:2016-01-15 17:32:00
【问题描述】:

我在 c# 中创建了一个 windows 窗体应用程序,它从硬盘加载视频并使用 windows 媒体播放器在窗体中显示它们。当我在 Visual Studio 中运行我的项目时,2-3 台电脑重新启动后,我收到以下消息,我无法进入设计器:

知道如何克服这个负担吗?我可以在没有设计器的情况下对表单元素进行编程吗?奇怪的是,当我运行我的项目时,Windows Media Player 运行良好,但它只是不允许我更改表单的设计!

【问题讨论】:

    标签: c# winforms activex


    【解决方案1】:

    您可以像这样在设计时检查代码是否正在执行:

    if(System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime)
    //... do not execute the code that will crash at design time.
    

    【讨论】:

    • 我应该在哪里添加这个 if 循环?
    • 如果不查看您的代码,这很难说。但我会收集到,如果有一段代码明确加载导致崩溃的 activeX 组件,那就是那个地方。
    • 当我尝试更改表单而不是表单设计时收到此消息!不在运行过程中。
    • 当您的表单被加载到设计器中时,该表单内部元素的部分代码会被执行,以便正确呈现表单。我的猜测是代码导致了您所看到的问题。 (同样,如果没有看到实际代码,这很难说)
    • 有没有办法在代码中设计我的元素,而不使用表单设计器?
    【解决方案2】:
    • 查看项目的参考资料。确保没有带有感叹号的引用
    • 确保AxWMPLIB ActiveX 组件已在 Windows 中注册。如果没有,请查找对应的.dll.ocx 文件并通过regsvr32 命令注册。
    • 如果您的项目可以编译,请尝试关闭并重新打开设计器。这是 Visual Studio 中的常见问题。
    • 看来您使用的是 AnyCPU 版本。即使在 64 位 Windows 中,Visual Studio 也会在 32 位进程 (devenv.exe) 中执行。这意味着设计器也是在 32 位环境中执行的。如果您使用 3rd 方组件,有时这可能会导致此类错误。尝试在配置管理器中添加x86 配置,新建一个版本,然后尝试打开设计器。最后,您当然可以构建应用的 AnyCPU 版本。
    • 如果没有任何帮助,请打开 *.Designer.cs 并手动配置您的表单...

    【讨论】:

    • 我的第三方库是 64 位的,我怎样才能将这两件事结合起来?首先设计表单然后添加我的库是否可行?
    • 如果它们仅在 64 位中可用,则可以解释您的问题。您是如何将 ActiveX 组件添加到表单中的?它工作过一次吗?当然,您可以在InitializeComponent 方法之外以编程方式添加 ActiveX 部件,这样您就可以在设计器中打开表单并以编程方式添加与媒体播放器相关的内容。
    • 很抱歉这个愚蠢的问题,但是你对 ActiveX 是什么意思? gui 元素组件?我将它们与设计器一起添加,当我自动导入 x64 的库时,问题就出现了。但是我可以再次编译我的代码,但是我无法更改 gui。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2015-10-28
    • 2017-03-27
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多