首页 > 代码库 > 事件和winfrom的学习
事件和winfrom的学习
一.事件
class Cat { private string name; public string Name { get { return name; } set { name = value; } } public Cat(string catname) { Name = catname; } public delegate void CatShoutEventHandler(object sender,CatShoutEventArgs args); public event CatShoutEventHandler CatShou;//定义一个事件 必须是公有的,而且是 event 加上委托成员 public void Shout() { Console.WriteLine("喵!我是{0}",Name); CatShoutEventArgs e=new CatShoutEventArgs(); e.Name = this.Name; if (CatShou != null) { CatShou(this,e); } } }
class CatShoutEventArgs:EventArgs //包含事件数据的类的基类 { public string Name { set; get; } }
class Mouse { private string name; public string Name { get { return name; } set { name = value; } } public Mouse(string name) { Name = name; } public void Run(object sender,CatShoutEventArgs args) { Console.WriteLine("{0}来了,{1}快跑啊",args.Name,Name); } }
class Program { static void Main(string[] args) { Cat cat = new Cat("tom"); Mouse m1 = new Mouse("舒克"); Mouse m2 = new Mouse("贝塔"); cat.CatShou += new Cat.CatShoutEventHandler(m1.Run); cat.CatShou += new Cat.CatShoutEventHandler(m2.Run); cat.Shout(); Console.ReadKey(); } }
二.winfrom的学习
说到学习winfrom,我想大家都感觉不就是拖拉控件吗?可是拖拉控件的后台程序我之前真的不会写额,或许真的很垃圾吧,但是我想大家都有个开始吧,今天就是我学C#以来在控制台上显示的结束,而程序可以给我们看到一个个的功能,这还是开始吧,感觉学习这个还是比较有兴趣的,下面是一个是一个实现几个空间功能的一小段程序,我为了给自己留一个小纪念,就把程序粘贴上来吧,嘿嘿,用到了lable,textbox,button,timer等以及它的事件。实现以下功能:
1:登录事件 检测各个控件是否为空,如果是空 弹出注册失败 如果成功 则显示新窗体 并且 新窗体上面显示 “XXX你好! 欢迎来到云和学院学习Net”走马灯形式
2:密码输入三次那么登录按钮不可用 3分钟之后可用
3:把注册信息的各个数据按照 “Rocky|admin|renyanlei@aliyun.com|18301412747|男|足球,篮球,排球”写入到一个文本文件中
页面:
代码:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } int num = 1; private void btnreg_Click(object sender, EventArgs e) { if (num.Equals(3)) { this.btnreg.Enabled = false; } string username =this.txtname.Text.Trim(); string pwd = this.txtpwd.Text.Trim(); string repwd = this.tatrepwd.Text.Trim(); string email = this.txtemail.Text.Trim(); string number = this.txtnumber.Text.Trim(); string gender = string.Empty; if (radman.Checked = true) { gender = this.radman.Text; } else { gender = this.radwoman.Text; } string like = string.Empty; if (ckbbas.Checked) { like += ckbbas.Text+","; } if (ckbpai.Checked) { like += ckbpai.Text + ","; } if (ckbfoot.Checked) { like += ckbfoot.Text + ","; } string context = string.Format("{0}{1}{2}{3}{4}{5}", username, pwd, email, number,gender,like); File.WriteAllText("dariy.txt", context); if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(pwd) || string.IsNullOrEmpty(email) || string.IsNullOrEmpty(number)) { MessageBox.Show("注册任意项不能为空"); num++; } else if (radman.Checked == false && radwoman.Checked == false) { MessageBox.Show("注册失败,请选择性别"); num++; } else if (!pwd.Equals(repwd)) { MessageBox.Show("注册失败,密码不不一致,请重新输入"); num++; } else { Regsuccess reg = new Regsuccess(username); reg.Show(); } } private void timer1_Tick(object sender, EventArgs e) { this.btnreg.Enabled = true; } }
下一个页面仅有一个lable和timer控件:
public partial class Regsuccess : Form { string context = string.Empty; public Regsuccess(string n) { InitializeComponent(); context = n + "好,欢迎来学习"; } private void timer1_Tick(object sender, EventArgs e) { context = context.Substring(1) + context.Substring(0,1); this.lbltim.Text = context; } }
好啦,今天大体上就讲啦这两方面,感觉还可以啦,感觉前面学习的在今天的程序中用得到很多,这个我们能意识到啦,之前曾说过我没来培训前写过一个小的网站,那时间的感觉就是什么也不知道,看下其他人写的方法,完全仿写的,现在能够知道代码的意思啦,而且学完啦基础再写小程序感觉知道怎么实现功能啦,感觉良好啊,嘿嘿,就像在写上面的传问题,我可以理解为构造函数在控制台的Main方法中的逆运用,还是蛮易理解的额,嘿嘿。对啦,我写的程序,可能会有错,但是各位大神发现啦要帮我改正,不要太过激啦,我只是一个初学者,还有会有用词不当的地方吧,大家帮我提出来,我会很感谢的,我在云和学院学习,我是在这培训,但是我的学习还是依靠自己的,我的程序出错错就是我的错,和培训机构没有任何关系的,老师只是教我们怎么学习,怎么写好程序,但是不可能一切都交给我们,所以不论怎么样,我都会好好学习的,谢谢!
事件和winfrom的学习