黑马程序员_学习日记3_WinForm

来源:互联网 发布:单片机硬件开发 编辑:程序博客网 时间:2024/04/30 00:11
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

414

昨天通过基础测试,被告知需要7-10天的时间学习HTMLSQLADO.NET相关知识。之前几天自己学习、复习了面向过程和面向对象的基础知识,今天下载视频,学习WinForm

几个基本概念:

1、             WinForm: Windows Form, .Net中用来开发Windows窗口程序的技术,无论是之前学的控制台程序,还是后面要学的ASP.Net都是调用.Net框架,因此所有知识点都是一样的。

2、            窗口上很多元素都是相似的,因此将这些元素抽象为一些类,这些类就叫控件。例如:ButtonTextBoxLabelRadioButton(d单选按钮)CheckBox(复选框)。

3、            当用户点击按钮的时候Button1_click方法被调用,这个方法不是程序员调用的,而是程序员把方法写好,并说明“当用户点击按钮的时候执行Button1_click方法中的代码”,这一点和控制台程序不同。这被称为“好莱坞原则”:Don’t call me, I will call you.

4、            控件要有含义,控件名前缀的“潜规则”:按钮Button(btn)、文本框TextBox(txt)

复选框CheckBox(cb)

        WinForm的视频教学以实例为主,我学习编写了一下小程序:ComboTestEmail分析、textBox测试、登录界面、多行文本框的应用、籍贯选择、加法计算器、累加器、四则运算器、图片显示、修改密码、字符串滚动。现选两个有代表性的分析一下,重难点是多行文本框的应用:

Email分析

界面:

图片

代码:

private void button1_Click(object sender, EventArgse)

        {

            stringstr = textBox1.Text;

            //将字符串以“@”为分隔符分成两段,存入strs[]字符串组

            string[]strs = str.Split('@');

            if(strs.Length != 2)

            {

                MessageBox.Show("非法的Email地址!");

                return;//不要忘了

            }

            textBox2.Text = strs[0];//用户名

            textBox3.Text = strs[1];//服务器

}

2、  多行文本框的应用

界面:

图片

代码:(1)我写的代码

private void btnOut_Click(object sender, EventArgse)

        {

            strings = txtScore.Text;

            string[]ss=txtScore.Lines;//将每一行信息存入ss数组中一个元素

            string[]name=newstring[30];//注意申明数组长度

            string[]score=newstring[30];

            int[]sco=newint[30];

            for(int i = 0; i < ss.Length; i++)

            {//将每个人的name和score分别存储

                string[] sss = ss[i].Split('=');

                name[i] = sss[0];

                score[i] = sss[1];

                sco[i] = Convert.ToInt32(score[i]);//将分数转换成int

            }

            intmax = sco[0];

            for (int i = 1; i < ss.Length; i++)

            {//找到最大值

                if (max < sco[i])

                {

                    max = sco[i];

                }

            }

            for(int i=0;i<ss.Length;i++)

            {

            if(max==sco[i])

            {

                MessageBox.Show(name[i]+"="+score[i]);

            }

            }

}

(2)视频教程的代码

private void btnOut_Click(object sender, EventArgse)

       {

            string[]lines = txtScore.Lines;

            stringmaxName = "";

            intmaxScore = -1;

            foreach(string lineinlines)

            {

                string[] strs = line.Split('=');

                string name = strs[0];

                string strScore = strs[1];

                int score = Convert.ToInt32(strScore);

                if (score >= maxScore)

                {

                    maxName = name;

                    maxScore =score;

                }

            }

            MessageBox.Show(string.Format("{0}是第一名,成绩{1}", maxName, maxScore));

}

两种方法比较:

视频代码用到foreach()方法,简化了代码,这种方法我之前没有掌握,可见知识面的重要性;

我用了3个for循环,而教程只用了一个foreach(),原因是我没有设置maxName使其和maxScore一起赋值,而是先用一个循环选出最大值,再用一个循环选出最大值所在的位置。

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------详细请查看:http://net.itheima.com/