4月14日
昨天通过基础测试,被告知需要7-10天的时间学习HTML、SQL及ADO.NET相关知识。之前几天自己学习、复习了面向过程和面向对象的基础知识,今天下载视频,学习WinForm。
几个基本概念:
1、 WinForm: Windows Form, .Net中用来开发Windows窗口程序的技术,无论是之前学的控制台程序,还是后面要学的ASP.Net都是调用.Net框架,因此所有知识点都是一样的。
2、 窗口上很多元素都是相似的,因此将这些元素抽象为一些类,这些类就叫控件。例如:Button、TextBox、Label、RadioButton(d单选按钮)、CheckBox(复选框)。
3、 当用户点击按钮的时候Button1_click方法被调用,这个方法不是程序员调用的,而是程序员把方法写好,并说明“当用户点击按钮的时候执行Button1_click方法中的代码”,这一点和控制台程序不同。这被称为“好莱坞原则”:Don’t call me, I will call you.
4、 控件要有含义,控件名前缀的“潜规则”:按钮Button(btn)、文本框TextBox(txt)、
复选框CheckBox(cb)。
WinForm的视频教学以实例为主,我学习编写了一下小程序:ComboTest、Email分析、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/