在DLL库中打开窗体遇编译错误,寻求技术解决方案
我来帮你搞定这个问题!你的两个报错其实都是同一个核心原因导致的——共享方法(Shared Function)和实例成员的调用规则冲突,咱们来一步步理清楚:
错误原因拆解
- 第一个错误:
Prompt.Show()报错,是因为Show()是窗体类的非共享实例方法,这类方法必须通过类的具体实例来调用,不能直接用类名去调用哦。 - 第二个错误:在
Shared方法里用Me不行,因为Me代表当前类的实例对象,但Shared方法属于类本身,不属于任何具体的实例,所以在Shared方法里根本不存在Me这个东西~
正确的解决方案
给你两种常用的解决办法,选哪种都可以:
方法一:显式创建窗体实例并显示
先创建Prompt类的实例,再调用它的Show方法,代码如下:
Public Class Prompt Shared Function open_prompt() ' 创建Prompt窗体的实例对象 Dim promptInstance As New Prompt() ' 调用实例的Show方法显示窗体 promptInstance.Show() End Function End Class
如果需要让窗体以模态方式显示(也就是弹出后必须关闭才能操作其他窗口),可以把Show()换成ShowDialog():
promptInstance.ShowDialog()
方法二:简化写法(直接创建实例并调用)
如果觉得代码太啰嗦,也可以把创建实例和调用方法合并成一行:
Public Class Prompt Shared Function open_prompt() New Prompt().Show() End Function End Class
额外说明
Windows Forms的窗体本质上就是一个类,它的大部分方法(比如Show、Close)和控件属性都是实例成员,必须先通过New关键字创建实例,才能访问这些成员。而Shared方法是属于整个类的,只能访问类的Shared成员,不能直接碰实例成员——这就是你踩坑的关键啦。
内容的提问来源于stack exchange,提问作者Null_




