求助跨命名空间的控件操作问题

问题描述

命名空间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的实例,而不是所谓的跨命名空间。

是这样的

时间: 2024-07-30 13:44:45

求助跨命名空间的控件操作问题的相关文章

listbox-C# 不同命名空间的控件操作

问题描述 C# 不同命名空间的控件操作 MainForm是一个主窗口,有一个ListBox控件,再另一个命名空间Plugin中需要操作MainForm中的ListBox.Items.Add(). 求助. 解决方案 不同命名空间不是问题,只要using这个空间就可以了. 问题是,你在Plugin中如何访问ListBox,我不建议你让Plugin维持一个指向MainForm的引用,或者让它来找MainForm,那样"插件"就和主程序紧密耦合在一起了. 正确的做法是主窗口传一个委托,将上下文

C# 跨线程调用控件

原文:C# 跨线程调用控件 在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应.  同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法   阅读目录 线程间操作无效 第一种办法:禁止编译器对跨线程访问做检查 第二种办法: 使用delegate和invoke来从其他线程中调用控件 第三种办法: 使用delegate和BeginInvoke来从其他线程中控制控件 第四种办法: 使用BackgroundWorker组件 源代码下载   线程间操作无效

C#子线程的控件操作问题解析

有关C#子线程的控件操作 一般来说,直接在子线程中对窗体上的控件操作是会出现异常,这是由于子线 程和运行窗体的线程是不同的空间,因此想要在子线程来操作窗体上的控件,是 不可能简单的通过控件对象名来操作,但不是说不能进行操作,微软提供了 Invoke的方法,其作用就是让子线程告诉窗体线程来完成相应的控件操作. 现在用一个用线程控制的进程条来说明,大致的步骤如下: 1.创建Invoke函数,大致如下: /// < summary> /// Delegate function to be invok

求助:winform窗体控件多,屏幕闪的问题。

问题描述 如题,求助,情况如下:我的一个winform窗体,用于监控设备的实时状态.上面有比较多的线,上千条,label四百个左右,用于实时显示各个监控点的状态.现在的问题是,当切换窗体或者label值变化的时候,可能是窗体重绘,整个屏幕就会闪,严重影响性能.用了双缓冲,没有一点用.this.SetStyle(ControlStyles.UserPaint,true);this.SetStyle(ControlStyles.AllPaintingInWmPaint,true);//禁止擦除背景.

Winfrom 如何安全简单的跨线程更新控件

来源:http://www.cnblogs.com/rainbowzc/archive/2010/09/29/1838788.html 由于多线程可能导致对控件访问的不一致,导致出现问题.C#中默认是要线程安全的,即在访问控件时需要首先判断是否跨线程,如果是跨线程的直接访问,在运行时会抛出异常. 解决办法有两个: 1.不进行线程安全的检查 2.通过委托的方式,在控件的线程上执行   常用写法:(不安全) private void WriteToolStripMsg(string msg, Col

windows跨线程调用控件的方法

用户不喜欢反应慢的程序.在执行耗时较长的操作时,使用多线程是明智之举,它可以提高程序 UI 的响应速度,使得一切运行显得更为快速.在Windows 中进行多线程编程曾经是 C++ 开发人员的专属特权,但是现在,可以使用所有兼容 Microsoft .NET 的语言来编写. 不过Windows 窗体体系结构对线程使用制定了严格的规则.如果只是编写单线程应用程序,则没必要知道这些规则,这是因为单线程的代码不可能违反这些规则.然而,一旦采用多线程,就需要理解 Windows 窗体中最重要的一条线程规则

分析SpinnerActivityTest中有关控件操作以及UI线程问题

首先说明,SpinnerActivityTest是官方给的单元测试sample. 继承自ActivityInstrumentationTestCase2进行activity测试.涉及到对控件的操作时比如处理动作,触屏和按键事件,和锁屏.,必须在mActivity.runOnUiThread()程序线程中 (或者在测试函数上添加@UiThreadTest,那么整个函数将在UI线程中运行),而不是在测试线程中 比如: mActivity.runOnUiThread(             new

时间控件操作-对input的时间控件的操作

问题描述 对input的时间控件的操作 我想要把年份固定在当前年,月份只允许选到1-5月怎么做 解决方案 WdatePicker({dateFmt:'yyy/MM',mix:'2014/05/31',min:'2014/01/01'})用这个时间控件

Android开发之路——单选框,复选框,弹出框等控件操作

由于这几个控件都是比较常用的控件,所以在进行操作的时候会比较常用,所以这个部分算是Android软件开发的重要部分,内容比较简单.分类型进行介绍 1.单选框操作:单选框在Android里面随处可见,它是由两部分组成的,一部分是RadioGroup,一部分是RadioButton.一个RadioGroup里面是有多个RadioButton.每个RadioButton就是一个单选项,而控制的时候是控制RadioGroup.下面是Xml和代码的实现部分 xml: <RadioGroup