Code Bye

问一下高手怎么利用listBox调试程序

各位高手:
在一个项目中,新建一个类,里面写程序。
在Form1窗体中,有一个listBox1。
目标是在程序可能出错的地方,写一个listBox1.Items.Add(“XXXX”);
本人的问题是,怎么样在程序中调用上面的语句?提示找不到listBox1。
解决方案

18

假定我们把 在项目中添加-新建项-类中创建的类 称作 user
那么 user 和 Form1 平级的,互不相扰的
虽然你在 Form1 中可以实例化 user(或直接使用 user 的静态方法),但在 user 中是访问不到 Form1 的成员的,而况 Form1 中的控件都是被设置成了静态的
你可以在实例化 user 的时候将 Form1 传递过去,这样就可以在 user 中通过传递过来的 Form1 的引用,对 Form1 的成员进行操作了
这种方式显然存在着很大的隐患,假如 From1 发生了变化,user 总就得做相应的调整,费神费力不说,还不能保证一下就改全改对
C# 其实已经提供了解决方案,那就是 事件委托
利用这个方案,你需要在 user 中声明一个 事件,和产生该事件的方法。user 中,当你需要发送什么时就调用该方法就可以了
为了传递相关的数据,你可能还需要定义一个事件类为数据。很简单,一般十行以内就搞定
你已经看到,定义的事件只管发出,并不管谁在响应和怎么响应
当 Form1(也可以是 From2或Form3…)对这个来自 user 的事件感兴趣时
只需订阅该事件,并指派一个处理方法。怎么样处理事件传递过来的数据,已经与事件的产生者(user)没什么关系了
这就是分工协作的团队作业

2

引用 7 楼 caibirdcnb 的回复:
Quote: 引用 6 楼 ajh99990 的回复:

这种帮你找错的问题 你不提供代码 我们怎么回答呢?本人能想到的可能情况有这么几种。
1.你根本没创建listBox1。
2.可能你listBox1是在主线程创建的,可你对它的操作是在其他线程进行的。
3.看看你是不是语法或名称写错了。
本人能想到的是这三种情况。具体的要看你代码。

本人的问题不是帮本人找错,而是问一下怎么样使用listBox1。
在Form1中,可以直接使用listBox1等各种控件。但是,假如在项目中添加-新建项-类中创建的类里面的程序,无法使用这些控件。
本人的问题是,怎么样在这些类里面使用控件?
本人的目标是,假如程序运行出错,就写某些字符串到listBox1里面。

原来如此  那你要知道,你的Form1窗口也是一个类,它和你后来新创建的这个类(就叫NewClass吧)是同一个层次的东西。直接从NewClass类去调用From1里面定义的控件是不可能的。
解决方法是使用事件。也就是将Form1中的方法作为NewClass类中事件的处理程序。这样的话,每当NewClass类触发特定事件,就可以让From1调用自身的ListBox1控件了。也就是实现了你说的“目标是在程序可能出错的地方,写一个listBox1.Items.Add(“XXXX”);” 不懂请追问。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明问一下高手怎么利用listBox调试程序