我要回答
您还没有登录,请登录!
学员:amandag(高歌 .NET学习顾问)提问时间:2008-09-25 01:18:41
周峰(afengwinner)
学员的作业描述:照老师做的!还是不太理解委托和事件他俩个有什么关系
作业评语:好
教师点评:完成了第二个作业的全部功能。对你的问题略做回答,就这次的作业而言,我们的处理机制是看起来是我们点下了从窗体的按钮,主窗体的标签的文本发生了改变,但实际上我们是在从窗体的这个按钮点击事件中触发了自定义的事件,而这个自定义事件最后实际是交由主窗体的某个方法去处理的。在现实生活中这样的案例也比比皆是,比如你被人告上法庭(也就是你触发了被告事件),但处理这个事件的并不是你自己,而是你所委托的律师,但要注意,并不是人人都能当你的律师的,比如他必须要有律师资格证等等,换而言之也就是要满足你的条件,而这个条件就是事件处理程序(在你的例子中就是ShowCount函数)必须和委托声明时的返回类型及参数列表要一致(就是public delegate void MyClickDelegate())
cnitmtd
学员的作业描述:按老师的方法做了几次有出些问题. 不过看了.参考答案还是明白了. !
作业评语:好
教师点评:完成了全部功能。
关于第一个作业
public void run()
==
public void Run()
在C#中标准的命名规范是方法名首字母大写,尤其是公有的方法。
关于第二个作业稍微说一下
//在按钮单击事件中激发MyClick事件
private void btnClickMe_Click(object sender, EventArgs e)
{
if(MyClick!=null)
MyClick();
}
如果按照标准的事件处理机制,if(MyClick!=null)这个判断是必须要做的,因为它相当于在判断从窗体是否注册(订阅)了MyClick事件,也就是只有注册了事件的对象才会引发事件(说的直白点就是你不给律师给钱他能帮你打官司么?)。在我们的这个程序中不加这句话不会出错,因为我们的每一个从窗体都注册了此MyClick事件。如果不加这个判断,同学们再在主窗体中注释掉frm.MyClick +=...这句话,大家可以看看会出现什么问题。
liminjun88
作业评语:好
教师点评:完成了第一个作业的全部功能。在作业中用到了System.Threading.Timer类,算是另一种思路,不过未必满足金老师作业的本意.
livingbody
学员的作业描述:
该题主要是挂接事件:
frm.MyClick += this.ResponseToOtherFormMyClickEvent;
其他代理
作业评语:好
教师点评:完成了第二个作业的全部功能。请注意变量的命名规范(Form1,Form2,label2这些应该修改),还有请注意适当的注释
niunan
学员的作业描述:说实话这个委托和事件真的是N难理解,至少我是没有理解透,但是作业倒是能做出来,其实作业有95%是老师已经帮我做出来了,我只是改了一点点而已,我是根据老师的实例UseEventsInForm改的,只是在主窗体上加个按键,然后把构造函数里的建立子窗体那几句移到按钮点击事件里了,然后在从窗体那里把count设置为static,呵呵。。不知道这算不算作弊啊。。。
作业评语:好
教师点评:完成了第二个作业的全部功能。能对金老师的案例进行修改,这当然很好,不过就思想而言,金老师的处理方法更合理一些,就面向对象的思想而言,引发事件的代码和处理事件的代码更合理,这也是通常所说的高内聚,低耦合。
sun_quan
学员的作业描述:使用2种方式实现.第2种实现了事件机制.
作业评语:好
教师点评:完成了第二个作业的全部功能。使用事件机制中出现的问题和上面niunan同学类似,请参考。
txwz2006
学员的作业描述:我花费了一些时间考虑如何是Count这个参数能够在第二个、第三个...窗体的实例化中不为0
作业评语:好
教师点评:完成了第二个作业的全部功能。请注意项目名称的命名规范(WindowsFormsApplication1),同样也请注意对cnitmtd同学第二个作业的点评。
隋亮亮(sllko2008)
作业评语:优秀
教师点评:完成了所有作业的全部功能。
对BookClass的建议:
可以考虑将name,author,bookconcern作为属性实现,而且请注意,C#中属性惯例应该是Pascal命名法,也就是单词的首字母应该大写,属性price改为Price更好。还有,没必要写自己的toString()方法,直接重写父类的ToString()方法更好(public override string ToString()
),这样将来输出的时候直接输出b1,b2对象即可,没有必要再显式调用toString()方法。
其他作业的点评请参考上面