问题描述
命名空间App有一个MainForm的主窗口,窗口中有一个ListBox控件;命名空间Plug中需要操作MainForm的ListBox添加一个items。这个怎么操作,网上搜索用委托来实现但是没成功,求助啊!
解决方案
解决方案二:
这个好像不需要委托吧。命名空间只是防止命名冲突的东西,不在一个namespace,只要加上namepsace.className就可以访问了。Plug中需要的是MainForm对象的引用,你可以用参数传进去,或者用公共的,static变量取得等等。然后就可以访问MainForm对象里的ListBox了。
解决方案三:
下面是静态变量的例子:staticclassProgram{publicstaticForm2MainWindow{get;set;};[STAThread]staticvoidMain(){MainWindow=newForm2();Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(MainWindow);}}
其它地方就可以直接用Program.MainWindow来访问了。
解决方案四:
关键是你要获取得到那个ListBox的实例,而不是所谓的跨命名空间。
解决方案五:
Plug项目里面引用App项目,就可以通过App的命名空间访问你需要访问的ListBox对象了,如果该对象是public的话。如果该对象被声明为静态对象,则访问时不需要实例化。
解决方案六:
引用2楼findcaiyzh的回复:
下面是静态变量的例子:staticclassProgram{publicstaticForm2MainWindow{get;set;};[STAThread]staticvoidMain(){MainWindow=newForm2();Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(MainWindow);}}其它地方就可以直接用Program.MainWindow来访问了。
已实现,谢谢!
解决方案七:
引用3楼effun的回复:
关键是你要获取得到那个ListBox的实例,而不是所谓的跨命名空间。
是这样的