这部分与此线程有关 Combining two projects and get a single .sln file .
在这些项目上调用表单的正确语法是什么。例如,如果 Solution1 包含 Project1 和 Project2,...并且... Project1 有 Form1.vb 并且 Project2 有 Form1.vb。那么从 Project1 中的 Form1.vb 调用 Project2 中的 Form1.vb 的语法是什么(假设有一个按钮可以在单击事件时单击并打开表单)。
但是,请注意,我已将 Project1 和 Project2 添加到 Solution1,并添加了对 My Project.Resources.Designer.vb.dll 的引用。
但是当我尝试从 Project1 调用 Project2 中的 Form1.vb 时,出现语法错误 - Project2.Form1 未定义。
有人可以指出我正确的方向吗?
任何帮助是极大的赞赏。提前致谢。
Project1 是粗体,因此是启动项目。
项目 1 的公开课 Form1:-
项目2的公开课Form1:-
错误信息: -
没有选择“导入命名空间”的选项:-
这是表单 Project1 的样子:-
我的引用管理器 => 解决方案选项为空
比方说,如果我想在上面的解决方案 => 项目选项中浏览到引用文件,我应该选择哪种文件类型??一种。 Visual Basic 项目文件 B.用户文件 C. VSPSCC 文件
如何从 Project1(启动项目)调用 Form1(在 olAddIn_With_Form1 中)?
回答:
通过引用管理器窗口添加 .dll 然后浏览到 ...\bin\Debug\olAddIn_With_Form1.dll
将 myolAddIn_With_Form1Form1 调暗为新的 olAddIn_With_Form1.Form1
myolAddIn_With_Form1Form1.ShowDialog()
对于踢球,我尝试通过“添加为链接”方法添加整个项目,但收到此错误消息
最佳答案
所以,用一些截图来回答:
首先创建您的两个项目。作为启动项目的项目(在您和我的示例中,即 Project1)需要了解其他解决方案。为此,我们需要添加对项目的引用,右键单击 Project1 并单击“添加引用...”
然后,使用侧栏中的解决方案选项,单击 Project2 上的复选框
然后您可以使用 Project2.Form1 标识符在您的代码中添加项目,因此
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim frmOtherProject As New Project2.Form1
frmOtherProject.Show()
End Sub
End Class
或者,如果您在第二个项目中的表单没有偏向名称(form1 当前存在 2 次,因此让我们将其重命名为 form2),您可以导入第二个项目并直接使用它的类
Imports Project2
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim frmOtherProject As New Form2
frmOtherProject.Show()
End Sub
End Class
我使用Visual Studio 2012作为基础,但原理应该是一样的;)
附加
我可能会指出,这不是您引用项目的典型风格,大多数情况下,您将按关注级别将应用程序分开,例如添加:
当然有很多方法可以用有意义的结构来安排你的应用程序,但我发现这个是一个很好的例子,说明你如何以一种有意义的方式来组织你的应用程序
更新
作为更新,如果您编写代码以便可以重用,那么让您的解决方案共享代码应该不难。通过在可以通过两种解决方案共享的类库中共享逻辑和更难的代码,您只需重写表示层(如何显示数据)。并且您可以更具体地针对您想要使用的环境执行此操作。
最后,您的 Outlook 插件解决方案和您的 windows 窗体项目可以共享请求资源、加载数据或进行其他一些复杂计算的代码,而您唯一需要“重现”的代码就是您如何在其上显示它屏幕。因此,您可以根据环境以更好的方式呈现特定于该环境的数据,但共享您在两种(或更多)环境中使用的逻辑和模型。
这样,你的开发时间就减少了,你的代码也不容易出错,因为你没有多次使用相同的代码,例如,请看下面的截图:
如您所见,有一个共享库,由 Outlook 插件和 Windows 窗体应用程序引用。 Forms 应用程序和 Outlook 应用程序都不知道彼此,它们也不应该知道,因为它们彼此之间基本上没有任何关系。
因此,尽管我的最新更新没有回答您的问题,但我仍然认为这是安排代码的更好方法。如果您以后想重用您制作的代码制作一个网站,您只需要制作一个额外的表示层,并再次重用 SharedLibrary 中的代码。
关于.net - 如何在多项目、单一解决方案环境(VS2012)中调用Forms?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30082895/