Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何基于引用的C#程序集事件触发显示VB.NET窗体?_C#_Vb.net_Winforms_Events_Project Reference - Fatal编程技术网

如何基于引用的C#程序集事件触发显示VB.NET窗体?

如何基于引用的C#程序集事件触发显示VB.NET窗体?,c#,vb.net,winforms,events,project-reference,C#,Vb.net,Winforms,Events,Project Reference,我第一次在这里问问题,所以如果我做得不对,我会提前道歉。我在搜索中找不到任何东西 我继承了一个VB.NET遗留Windows应用程序项目。我希望尽可能地使用C#编写所有新添加的代码,包括新的Windows窗体。因此,我在一个C#程序集中有一个新的Windows窗体(不确定这是否是最好的方式),由VB.NET Windows应用程序引用。 在从引用的程序集初始化C#窗体时,我会将所有必要的参数传递给它,我将根据这些参数在C#Windows窗体中建立我的网格列和记录。到目前为止,这里没有问题。 在C

我第一次在这里问问题,所以如果我做得不对,我会提前道歉。我在搜索中找不到任何东西

我继承了一个VB.NET遗留Windows应用程序项目。我希望尽可能地使用C#编写所有新添加的代码,包括新的Windows窗体。因此,我在一个C#程序集中有一个新的Windows窗体(不确定这是否是最好的方式),由VB.NET Windows应用程序引用。 在从引用的程序集初始化C#窗体时,我会将所有必要的参数传递给它,我将根据这些参数在C#Windows窗体中建立我的网格列和记录。到目前为止,这里没有问题。 在C#网格的单元格双击事件中,我想显示引用C#程序集的应用程序中的现有VB.NET Winform。
我的问题是:如何在VB.NET Windows窗体上获得一个句柄来显示它,或者如何对它执行其他操作?循环引用显然是不允许的,所以如果可能的话,我如何实现这一点,C#还是其他方式?

一种方法是将通用表单创建处理程序传递给您的C#
表单
,因为它是从VB.NET代码实例化的。这样,表单就不必知道它必须创建和显示什么类型的表单;它只知道它是一个
表单
,如果您只需要显示它就足够了

您也可以考虑将您的C <代码>窗体< /代码>单元格双击事件作为可由VB.NET代码处理的公共事件。


如果在您的设计中有意义,第三种选择是使用第三个部件作为桥接器。此程序集可由VB.NET和C程序集引用,并保留在这些程序集中实现/使用的接口类型。

您应该能够向对象添加事件处理程序


“获得一个句柄”是相当不具体的。通常,您只需在项目中添加对程序集的引用。您的编译器不关心它是用什么语言编写的。只要VB.NET项目声明它是公共的,您就可以简单地使用new操作符创建实例,并使用其Show()方法来显示它。谢谢!当属性“ShowForm”为true时,我编写了一个带有自定义事件触发的类,从而有效地实现了这一点。我从初始化C#汇编表单的VB.NET表单中将事件处理程序分配给自定义事件。通过这种方式,我可以灵活地管理任何和所有c#引用的程序集窗口窗体,并在需要时添加各种其他事件。