问题描述
各位高手:小弟初学C#还有很多不理解的地方,比如C#中的事件,我感觉比较难理解,尤其是自己写事件更难了,老师说事件不用自己写,但我想问各位一下以后到底用不用自己写事件?
解决方案
解决方案二:
谢谢各位高手的指点,小弟初学见笑了!
解决方案三:
对象.事件+=然后按“Tab"键,在按”Tab“键,事件自动生成。
解决方案四:
我也一直是像楼上那样使用的.没自己彻底手写实现过
解决方案五:
自定义事件用delegate.举一个简单例子,Form1为主窗口,Form2为子窗口.点击Form1上的按钮弹出Form2,然后点击Form2上的按钮将Form2的相关数据传递给Form1.Form2窗口的主要代码:首先定义代理publicdelegate[返回值类型][delegateName](参数列表);这里的参数可以是string,int等类型,也可以按标准的事件参数,如:publicdelegatevoidTextChange(objectsender,EventArgsargs)然后定义事件publicevent[delegateName][name];publicdelegatevoidGetForm(stringvalue);publiceventGetFormGetFormHandle;publicdelegatevoidGetArgs(objectsender,MyEventArgsargs);publiceventGetArgsGetButtonArgs;privatevoidbutton1_Click(objectsender,EventArgse){if(this.GetFormHandle!=null){this.GetFormHandle(this.textBox1.Text);}this.Close();}privatevoidbutton2_Click(objectsender,EventArgse){if(this.GetButtonArgs!=null){this.GetButtonArgs(sender,newMyEventArgs(this.textBox1.Text,this.button2.Text));}this.Close();}
publicclassMyEventArgs:EventArgs{privatestringname;privatestringtitle;publicMyEventArgs(stringname,stringtitle){this.name=name;this.title=title;}publicstringName{get{returnthis.name;}set{this.name=value;}}publicstringTitle{get{returnthis.title;}set{this.title=value;}}}
Form1窗口的主要代码:privatevoidbutton1_Click(objectsender,EventArgse){Form2f=newForm2();f.GetFormHandle+=newForm2.GetForm(f_GetFormHandle);f.GetButtonArgs+=newForm2.GetArgs(f_GetButtonArgs);f.Show();}voidf_GetButtonArgs(objectsender,MyEventArgsargs){MessageBox.Show(((Button)sender).Text+args.Name+args.Title);return;}publicvoidf_GetFormHandle(stringvalue){this.textBox1.Text=value;}
解决方案六:
事件就是发生某件事情比如“单击button1按钮”就是button1_click事件这个是不用写而事件里面的代码表示这个事件发生以后产生的结果如何,这是必须要写的不知道你说的是不是“方法”方法要自己写,然后你可以随时调用他c#里面的难点是委托,事件挂钩,和多线程结合使用,建议你多看看书
解决方案七:
看应用情况,有些时候用事件恰当好处,参考例子,http://blog.csdn.net/zhzuo/archive/2004/06/15/22038.aspxhttp://blog.csdn.net/zhzuo/archive/2004/04/02/22026.aspx