同一解决方案下跨项目调用窗体时无法引用原项目如何解决
问题原因
Project2默认没有引用Project1的程序集,且直接双向引用会产生循环依赖问题,不建议直接调用Project1的窗体类。
推荐解决方法(无循环依赖)
步骤1:在Project2的Form1中添加构造函数参数,接收要恢复显示的窗体实例
' Project2.Form1 的代码 Private _parentForm As Form ' 新增带参数的构造函数 Public Sub New(parentForm As Form) InitializeComponent() ' 必须保留这行初始化控件 _parentForm = parentForm End Sub
步骤2:Project1调用Project2.Form1时传入自身实例
把原来的调用代码改成:
Dim frm As New Project2.Form1(Me) ' 把当前Project1的Home窗体实例传进去 frm.Show() Me.Hide()
步骤3:Project2.Form1的退出按钮代码改为使用传入的实例恢复显示
If _parentForm IsNot Nothing Then _parentForm.Show() End If Me.Close()
可选解决方法(直接添加引用,不推荐,易产生循环依赖)
如果一定要直接在Project2中调用Project1的类,按以下步骤操作:
- 右键点击解决方案资源管理器中的Project2项目,选择「添加」->「引用」
- 在弹出的窗口中切换到「项目」选项卡,勾选Project1,点击确定
- 回到Project2的代码文件顶部,添加
Imports Project1语句即可识别Project1中的类
内容的提问来源于stack exchange,提问作者karthick ks
相关产品推荐
相关产品推荐

