事件和winform的學習


         記得現在已經不在學習winform啦,可是我們為什么還是學習啦,我感覺就是幫助我們往下一個層次進發啦,因為從控制台直接開始進入webform的學習,我們很難接受啦,估計效率也不高啦,所以我們就簡單的學習一下winfrom啦,感覺今天學習起來比console簡單,或許是因為我們之前在學校接觸過窗體吧,但是之前我可是一點代碼都不會寫,那時間學習只有應付考試的心理,而且在上實驗課時間就是看着書上的代碼給敲打到運行環境里面,也沒有知道這是什么意思,但是在現在接觸時間就是感覺熟悉,而那些在寫代碼時間感覺真的沒有那么難啦,甚至感覺還是這個寫代碼簡單,嘿嘿,我也知道學習winform僅僅是這兩天的時間吧,熟悉下這個程序罷啦。下面簡單的舉幾個例子說下幾個事件。
      一.事件 
  下面舉例說明一個事件的方法:
 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方法中的逆運用,還是蠻易理解的額,嘿嘿。對啦,我寫的程序,可能會有錯,但是各位大神發現啦要幫我改正,不要太過激啦,我只是一個初學者,還有會有用詞不當的地方吧,大家幫我提出來,我會很感謝的,我在雲和學院學習,我是在這培訓,但是我的學習還是依靠自己的,我的程序出錯錯就是我的錯,和培訓機構沒有任何關系的,老師只是教我們怎么學習,怎么寫好程序,但是不可能一切都交給我們,所以不論怎么樣,我都會好好學習的,謝謝!

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM