一.事件
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(); } }
二.winform的學習
說到學習winform,我想大家都感覺不就是拖拉控件嗎?可是拖拉控件的后台程序我之前真的不會寫額,或許真的很垃圾吧,但是我想大家都有個開始吧,今天就是我學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方法中的逆運用,還是蠻易理解的額,嘿嘿。對啦,我寫的程序,可能會有錯,但是各位大神發現啦要幫我改正,不要太過激啦,我只是一個初學者,還有會有用詞不當的地方吧,大家幫我提出來,我會很感謝的,我在雲和學院學習,我是在這培訓,但是我的學習還是依靠自己的,我的程序出錯錯就是我的錯,和培訓機構沒有任何關系的,老師只是教我們怎么學習,怎么寫好程序,但是不可能一切都交給我們,所以不論怎么樣,我都會好好學習的,謝謝!