我正在开发一个Autocad插件,使用Windows Forms没有问题。我创建了一个用户控件(winforms),以便将来可以在任何形式中复制它。问题是,从控件的代码中,如何获取运行该控件的应用程序实例?这可能是一个纯WinForms问题。
条件是,在插件中,我可以轻松获取Autocad应用程序实例。用户控件意味着在单独的程序集(dll)中,以便在插件应用程序中引用它,因此它无法直接访问应用程序实例。
有一个主要程序集作为Autocad插件运行。该程序集已经实例化了Autocad应用程序。现在我有一些与Autocad一起使用的有用窗体控件,在单独的程序集中。(这是因为我想在我喜欢的许多不同插件中使用它们)。所以,Autocad运行主程序集,并运行单独程序集的控件。
为了正常工作,这些控件需要访问运行主程序集的Autocad应用程序。今天,我在控件中将应用程序作为属性使用,必须在使用之前设置它们。(如果我忘记设置它,就会出现异常)。由于我不能使用带参数的创作者来创建控件。我希望控件能够检测其运行的应用程序,以便避免这种解决方法。
条件是,在插件中,我可以轻松获取Autocad应用程序实例。用户控件意味着在单独的程序集(dll)中,以便在插件应用程序中引用它,因此它无法直接访问应用程序实例。
有一个主要程序集作为Autocad插件运行。该程序集已经实例化了Autocad应用程序。现在我有一些与Autocad一起使用的有用窗体控件,在单独的程序集中。(这是因为我想在我喜欢的许多不同插件中使用它们)。所以,Autocad运行主程序集,并运行单独程序集的控件。
为了正常工作,这些控件需要访问运行主程序集的Autocad应用程序。今天,我在控件中将应用程序作为属性使用,必须在使用之前设置它们。(如果我忘记设置它,就会出现异常)。由于我不能使用带参数的创作者来创建控件。我希望控件能够检测其运行的应用程序,以便避免这种解决方法。
Form.FindApplication
或者Form.FindRunningAssembly.FindCallingAssembly
。 - Daniel Möller